00000200 4e71	nop	
00000202 4e71	nop	
00000204 60fa	bra.s	ErrorTrap
00000206 4ab900a10008	tst.l	(port_1_control_hi).l
0000020c 6606	bne.s	PortA_Ok
0000020e 4a7900a1000c	tst.w	(expansion_control_hi).l
00000214 667c	bne.s	SkipSetup
00000216 4bfa007c	lea	SetupValues(pc),a5
0000021a 4c9d00e0	movem.w	(a5)+,d5-d7
0000021e 4cdd1f00	movem.l	(a5)+,a0-a4
00000222 1029ef01	move.b	-$10FF(a1),d0
00000226 0200000f	andi.b	#$F,d0
0000022a 6708	beq.s	SkipSecurity
0000022c 237c534547412f00	move.l	#'SEGA',$2F00(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	#$18-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	#$25,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	#$1F,d3
0000026e 2680	move.l	d0,(a3)
00000270 51cbfffc	dbf	d3,ClrCRAMLoop
00000274 289d	move.l	(a5)+,(a4)
00000276 7813	moveq	#$13,d4
00000278 2680	move.l	d0,(a3)
0000027a 51ccfffc	dbf	d4,ClrVSRAMLoop
0000027e 7a03	moveq	#3,d5
00000280 175d0011	move.b	(a5)+,$11(a3)
00000284 51cdfffa	dbf	d5,PSGInitLoop
00000288 3480	move.w	d0,(a2)
0000028a 4cd67fff	movem.l	(a6),d0-a6
0000028e 46fc2700	move.w	#$2700,sr
00000292 606c	bra.s	GameProgram
00000300 4a7900c00004	tst.w	(vdp_control_port).l
00000306 0839000600a1000d	btst	#6,(expansion_control).l
0000030e 670c	beq.s	CheckSumCheck
00000310 0cb8696e6974fffc	cmpi.l	#'init',(v_init).w
00000318 6700004a	beq.w	GameInit
0000031c 207c00000200	movea.l	#EndOfHeader,a0
00000322 227c000001a4	movea.l	#RomEndLoc,a1
00000328 2011	move.l	(a1),d0
0000032a 7200	moveq	#0,d1
0000032c d258	add.w	(a0)+,d1
0000032e b088	cmp.l	a0,d0
00000330 64fa	bhs.s	.loop
00000332 227c0000018e	movea.l	#Checksum,a1
00000338 b251	cmp.w	(a1),d1
0000033a 6600007c	bne.w	CheckSumError
0000033e 4df8fe00	lea	(v_crossresetram).w,a6
00000342 7e00	moveq	#0,d7
00000344 3c3c007f	move.w	#(v_ram_end-v_crossresetram)/4-1,d6
00000348 2cc7	move.l	d7,(a6)+
0000034a 51cefffc	dbf	d6,.clearRAM
0000034e 103900a10001	move.b	(console_version).l,d0
00000354 020000c0	andi.b	#$C0,d0
00000358 11c0fff8	move.b	d0,(v_megadrive).w
0000035c 21fc696e6974fffc	move.l	#'init',(v_init).w
00000364 4df900ff0000	lea	(v_ram_start).l,a6
0000036a 7e00	moveq	#0,d7
0000036c 3c3c3f7f	move.w	#(v_crossresetram-v_ram_start_def)/4-1,d6
00000370 2cc7	move.l	d7,(a6)+
00000372 51cefffc	dbf	d6,.clearRAM
00000376 61000eaa	bsr.w	VDPSetupGame
0000037a 61000fd6	bsr.w	DACDriverLoad
0000037e 61000e36	bsr.w	JoypadInit
00000382 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
00000388 1038f600	move.b	(v_gamemode).w,d0
0000038c 0240001c	andi.w	#$1C,d0
00000390 4ebb0004	jsr	GameModeArray(pc,d0.w)
00000394 60f2	bra.s	MainGameLoop
00000396 60002a78	bra.w	GM_Sega
0000039a 60002b7c	bra.w	GM_Title
0000039e 60003402	bra.w	GM_Level
000003a2 600033fe	bra.w	GM_Level
000003a6 60004234	bra.w	GM_Special
000003aa 60004934	bra.w	GM_Continue
000003ae 60004d36	bra.w	GM_Ending
000003b2 60005410	bra.w	GM_Credits
000003b6 4e75	rts	
000003b8 61000e68	bsr.w	VDPSetupGame
000003bc 23fcc000000000c00004	move.l	#$C0000000,(vdp_control_port).l
000003c6 7e3f	moveq	#($80)/2-1,d7
000003c8 33fc000e00c00000	move.w	#cRed,(vdp_data_port).l
000003d0 51cffff6	dbf	d7,.fillred
000003d4 60fe	bra.s	.endlessloop
000003d6 11fc0002fc44	move.b	#2,(v_errortype).w
000003dc 605c	bra.s	ErrorHandler_WithAddress
000003de 11fc0004fc44	move.b	#4,(v_errortype).w
000003e4 6054	bra.s	ErrorHandler_WithAddress
000003e6 11fc0006fc44	move.b	#6,(v_errortype).w
000003ec 54af0002	addq.l	#2,2(sp)
000003f0 6070	bra.s	ErrorHandler_WithoutAddress
000003f2 11fc0008fc44	move.b	#8,(v_errortype).w
000003f8 6068	bra.s	ErrorHandler_WithoutAddress
000003fa 11fc000afc44	move.b	#10,(v_errortype).w
00000400 6060	bra.s	ErrorHandler_WithoutAddress
00000402 11fc000cfc44	move.b	#12,(v_errortype).w
00000408 6058	bra.s	ErrorHandler_WithoutAddress
0000040a 11fc000efc44	move.b	#14,(v_errortype).w
00000410 6050	bra.s	ErrorHandler_WithoutAddress
00000412 11fc0010fc44	move.b	#16,(v_errortype).w
00000418 6048	bra.s	ErrorHandler_WithoutAddress
0000041a 11fc0012fc44	move.b	#18,(v_errortype).w
00000420 54af0002	addq.l	#2,2(sp)
00000424 603c	bra.s	ErrorHandler_WithoutAddress
00000426 11fc0014fc44	move.b	#20,(v_errortype).w
0000042c 54af0002	addq.l	#2,2(sp)
00000430 6030	bra.s	ErrorHandler_WithoutAddress
00000432 11fc0000fc44	move.b	#0,(v_errortype).w
00000438 6028	bra.s	ErrorHandler_WithoutAddress
0000043a 46fc2700	move.w	#$2700,sr
0000043e 544f	addq.w	#2,sp
00000440 21dffc40	move.l	(sp)+,(v_spbuffer).w
00000444 544f	addq.w	#2,sp
00000446 48f8fffffc00	movem.l	d0-a7,(v_regbuffer).w
0000044c 6100003a	bsr.w	ShowErrorMessage
00000450 202f0002	move.l	2(sp),d0
00000454 61000164	bsr.w	ShowErrorValue
00000458 2038fc40	move.l	(v_spbuffer).w,d0
0000045c 6100015c	bsr.w	ShowErrorValue
00000460 6016	bra.s	loc_478
00000462 46fc2700	move.w	#$2700,sr
00000466 48f8fffffc00	movem.l	d0-a7,(v_regbuffer).w
0000046c 6100001a	bsr.w	ShowErrorMessage
00000470 202f0002	move.l	2(sp),d0
00000474 61000144	bsr.w	ShowErrorValue
00000478 61000166	bsr.w	ErrorWaitForC
0000047c 4cf8fffffc00	movem.l	(v_regbuffer).w,d0-a7
00000482 46fc2300	move.w	#$2300,sr
00000486 4e73	rte	
00000488 4df900c00000	lea	(vdp_data_port).l,a6
0000048e 23fc7800000300c00004	move.l	#($40000000+(((ArtTile_Error_Handler_Font*tile_size)&$3FFF)<<16)+(((ArtTile_Error_Handler_Font*tile_size)&$C000)>>14)),(vdp_control_port).l
00000498 41f9000005f0	lea	(Art_Text).l,a0
0000049e 323c027f	move.w	#(Art_Text_end-Art_Text-tile_size)/2-1,d1
000004a2 3c98	move.w	(a0)+,(a6)
000004a4 51c9fffc	dbf	d1,.loadgfx
000004a8 7000	moveq	#0,d0
000004aa 1038fc44	move.b	(v_errortype).w,d0
000004ae 303b0022	move.w	ErrorText(pc,d0.w),d0
000004b2 41fb001e	lea	ErrorText(pc,d0.w),a0
000004b6 23fc4604000300c00004	move.l	#($40000000+(((vram_fg+$604)&$3FFF)<<16)+(((vram_fg+$604)&$C000)>>14)),(vdp_control_port).l
000004c0 7212	moveq	#19-1,d1
000004c2 7000	moveq	#0,d0
000004c4 1018	move.b	(a0)+,d0
000004c6 06400790	addi.w	#-'0'+ArtTile_Error_Handler_Font,d0
000004ca 3c80	move.w	d0,(a6)
000004cc 51c9fff4	dbf	d1,.showchars
000004d0 4e75	rts	
000005ba 3cbc07ca	move.w	#ArtTile_Error_Handler_Font+10,(a6)
000005be 7407	moveq	#8-1,d2
000005c0 e998	rol.l	#4,d0
000005c2 6106	bsr.s	.shownumber
000005c4 51cafffa	dbf	d2,.loop
000005c8 4e75	rts	
000005ca 3200	move.w	d0,d1
000005cc 0241000f	andi.w	#$F,d1
000005d0 0c41000a	cmpi.w	#$A,d1
000005d4 6502	blo.s	.chars0to9
000005d6 5e41	addq.w	#7,d1
000005d8 064107c0	addi.w	#ArtTile_Error_Handler_Font,d1
000005dc 3c81	move.w	d1,(a6)
000005de 4e75	rts	
000005e0 61000c04	bsr.w	ReadJoypads
000005e4 0c380020f605	cmpi.b	#btnC,(v_jpadpress1).w
000005ea 6600fff4	bne.w	ErrorWaitForC
000005ee 4e75	rts	
00000b10 48e7fffe	movem.l	d0-a6,-(sp)
00000b14 4a38f62a	tst.b	(v_vblank_routine).w
00000b18 676e	beq.s	VBlank_Lag
00000b1a 303900c00004	move.w	(vdp_control_port).l,d0
00000b20 23fc4000001000c00004	move.l	#$40000010,(vdp_control_port).l
00000b2a 23f8f61600c00000	move.l	(v_scrposy_vdp).w,(vdp_data_port).l
00000b32 08380006fff8	btst	#6,(v_megadrive).w
00000b38 6708	beq.s	.notPAL
00000b3a 303c0700	move.w	#$700,d0
00000b3e 51c8fffe	dbf	d0,.waitPAL
00000b42 1038f62a	move.b	(v_vblank_routine).w,d0
00000b46 11fc0000f62a	move.b	#id_VBlank_Lag,(v_vblank_routine).w
00000b4c 31fc0001f644	move.w	#1,(f_hblank_pal).w
00000b52 0240003e	andi.w	#$3E,d0
00000b56 303b0016	move.w	VBlank_Index(pc,d0.w),d0
00000b5a 4ebb0012	jsr	VBlank_Index(pc,d0.w)
00000b5e 4eb900071b4c	jsr	(UpdateMusic).l
00000b64 52b8fe0c	addq.l	#1,(v_vblank_count).w
00000b68 4cdf7fff	movem.l	(sp)+,d0-a6
00000b6c 4e73	rte	
00000b88 0c38008cf600	cmpi.b	#$80+id_Level,(v_gamemode).w
00000b8e 670a	beq.s	.islevel
00000b90 0c38000cf600	cmpi.b	#id_Level,(v_gamemode).w
00000b96 6600ffc6	bne.w	VBlank_Music
00000b9a 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00000ba0 6600ffbc	bne.w	VBlank_Music
00000ba4 303900c00004	move.w	(vdp_control_port).l,d0
00000baa 08380006fff8	btst	#6,(v_megadrive).w
00000bb0 6708	beq.s	.notPAL
00000bb2 303c0700	move.w	#$700,d0
00000bb6 51c8fffe	dbf	d0,.waitPAL
00000bba 31fc0001f644	move.w	#1,(f_hblank_pal).w
00000bc0 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00000bc8 0839000000a11100	btst	#0,(z80_bus_request).l
00000bd0 66f6	bne.s	.wait
00000bd2 4a38f64e	tst.b	(f_wtr_state).w
00000bd6 6626	bne.s	.waterabove
00000bd8 4bf900c00004	lea	(vdp_control_port).l,a5
00000bde 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00000be4 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
00000bea 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
00000bee 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000bf2 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000bf8 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000bfc 6024	bra.s	.waterbelow
00000bfe 4bf900c00004	lea	(vdp_control_port).l,a5
00000c04 2abc94009340	move.l	#$94000000+((((v_palette_water_end-v_palette_water)>>1)&$FF00)<<8)+$9300+(((v_palette_water_end-v_palette_water)>>1)&$FF),(a5)
00000c0a 2abc96fd9540	move.l	#$96000000+(((v_palette_water>>1)&$FF00)<<8)+$9500+((v_palette_water>>1)&$FF),(a5)
00000c10 3abc977f	move.w	#$9700+((((v_palette_water>>1)&$FF0000)>>16)&$7F),(a5)
00000c14 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000c18 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000c1e 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000c22 3ab8f624	move.w	(v_hblank_hreg).w,(a5)
00000c26 33fc000000a11100	move.w	#0,(z80_bus_request).l
00000c2e 6000ff2e	bra.w	VBlank_Music
00000c32 6100043a	bsr.w	VBlank_StandardTransfers
00000c36 4a78f614	tst.w	(v_generictimer).w
00000c3a 67000006	beq.w	.end
00000c3e 5378f614	subq.w	#1,(v_generictimer).w
00000c42 4e75	rts	
00000c44 61000428	bsr.w	VBlank_StandardTransfers
00000c48 61005c3c	bsr.w	LoadTilesAsYouMove_BGOnly
00000c4c 610009f4	bsr.w	ProcessPLC_9Tiles
00000c50 4a78f614	tst.w	(v_generictimer).w
00000c54 67000006	beq.w	.end
00000c58 5378f614	subq.w	#1,(v_generictimer).w
00000c5c 4e75	rts	
00000c5e 6100040e	bsr.w	VBlank_StandardTransfers
00000c62 4e75	rts	
00000c64 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
00000c6a 6700013a	beq.w	VBlank_SpecialStage
00000c6e 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00000c76 0839000000a11100	btst	#0,(z80_bus_request).l
00000c7e 66f6	bne.s	.wait
00000c80 61000564	bsr.w	ReadJoypads
00000c84 4a38f64e	tst.b	(f_wtr_state).w
00000c88 6626	bne.s	.waterabove
00000c8a 4bf900c00004	lea	(vdp_control_port).l,a5
00000c90 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00000c96 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
00000c9c 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
00000ca0 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000ca4 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000caa 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000cae 6024	bra.s	.waterbelow
00000cb0 4bf900c00004	lea	(vdp_control_port).l,a5
00000cb6 2abc94009340	move.l	#$94000000+((((v_palette_water_end-v_palette_water)>>1)&$FF00)<<8)+$9300+(((v_palette_water_end-v_palette_water)>>1)&$FF),(a5)
00000cbc 2abc96fd9540	move.l	#$96000000+(((v_palette_water>>1)&$FF00)<<8)+$9500+((v_palette_water>>1)&$FF),(a5)
00000cc2 3abc977f	move.w	#$9700+((((v_palette_water>>1)&$FF0000)>>16)&$7F),(a5)
00000cc6 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000cca 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000cd0 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000cd4 3ab8f624	move.w	(v_hblank_hreg).w,(a5)
00000cd8 4bf900c00004	lea	(vdp_control_port).l,a5
00000cde 2abc940193c0	move.l	#$94000000+((((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF00)<<8)+$9300+(((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF),(a5)
00000ce4 2abc96e69500	move.l	#$96000000+(((v_hscrolltablebuffer>>1)&$FF00)<<8)+$9500+((v_hscrolltablebuffer>>1)&$FF),(a5)
00000cea 3abc977f	move.w	#$9700+((((v_hscrolltablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000cee 3abc7c00	move.w	#$4000+((vram_hscroll)&$3FFF),(a5)
00000cf2 31fc0083f640	move.w	#$80+(((vram_hscroll)&$C000)>>14),(v_vdp_buffer2).w
00000cf8 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000cfc 4bf900c00004	lea	(vdp_control_port).l,a5
00000d02 2abc94019340	move.l	#$94000000+((((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF00)<<8)+$9300+(((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF),(a5)
00000d08 2abc96fc9500	move.l	#$96000000+(((v_spritetablebuffer>>1)&$FF00)<<8)+$9500+((v_spritetablebuffer>>1)&$FF),(a5)
00000d0e 3abc977f	move.w	#$9700+((((v_spritetablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000d12 3abc7800	move.w	#$4000+((vram_sprites)&$3FFF),(a5)
00000d16 31fc0083f640	move.w	#$80+(((vram_sprites)&$C000)>>14),(v_vdp_buffer2).w
00000d1c 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000d20 4a38f767	tst.b	(f_sonframechg).w
00000d24 672a	beq.s	.nochg
00000d26 4bf900c00004	lea	(vdp_control_port).l,a5
00000d2c 2abc94019370	move.l	#$94000000+((((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF00)<<8)+$9300+(((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF),(a5)
00000d32 2abc96e49500	move.l	#$96000000+(((v_sgfx_buffer>>1)&$FF00)<<8)+$9500+((v_sgfx_buffer>>1)&$FF),(a5)
00000d38 3abc977f	move.w	#$9700+((((v_sgfx_buffer>>1)&$FF0000)>>16)&$7F),(a5)
00000d3c 3abc7000	move.w	#$4000+((ArtTile_Sonic*tile_size)&$3FFF),(a5)
00000d40 31fc0083f640	move.w	#$80+(((ArtTile_Sonic*tile_size)&$C000)>>14),(v_vdp_buffer2).w
00000d46 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000d4a 11fc0000f767	move.b	#0,(f_sonframechg).w
00000d50 33fc000000a11100	move.w	#0,(z80_bus_request).l
00000d58 4cf800fff700	movem.l	(v_screenposx).w,d0-d7
00000d5e 48f800ffff10	movem.l	d0-d7,(v_screenposx_dup).w
00000d64 4cf80003f754	movem.l	(v_fg_scroll_flags).w,d0-d1
00000d6a 48f80003ff30	movem.l	d0-d1,(v_fg_scroll_flags_dup).w
00000d70 0c380060f625	cmpi.b	#96,(v_hblank_line).w
00000d76 640c	bhs.s	VBlank_UpdateScreen
00000d78 11fc0001f64f	move.b	#1,(f_doupdatesinhblank).w
00000d7e 588f	addq.l	#4,sp
00000d80 6000fde2	bra.w	VBlank_Exit
00000d84 61005b2c	bsr.w	LoadTilesAsYouMove
00000d88 4eb90001c024	jsr	(AnimateLevelGfx).l
00000d8e 4eb90001c6b8	jsr	(HUD_Update).l
00000d94 610008c8	bsr.w	ProcessPLC_3Tiles
00000d98 4a78f614	tst.w	(v_generictimer).w
00000d9c 67000006	beq.w	.end
00000da0 5378f614	subq.w	#1,(v_generictimer).w
00000da4 4e75	rts	
00000da6 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00000dae 0839000000a11100	btst	#0,(z80_bus_request).l
00000db6 66f6	bne.s	.wait
00000db8 6100042c	bsr.w	ReadJoypads
00000dbc 4bf900c00004	lea	(vdp_control_port).l,a5
00000dc2 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00000dc8 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
00000dce 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
00000dd2 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000dd6 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000ddc 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000de0 4bf900c00004	lea	(vdp_control_port).l,a5
00000de6 2abc94019340	move.l	#$94000000+((((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF00)<<8)+$9300+(((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF),(a5)
00000dec 2abc96fc9500	move.l	#$96000000+(((v_spritetablebuffer>>1)&$FF00)<<8)+$9500+((v_spritetablebuffer>>1)&$FF),(a5)
00000df2 3abc977f	move.w	#$9700+((((v_spritetablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000df6 3abc7800	move.w	#$4000+((vram_sprites)&$3FFF),(a5)
00000dfa 31fc0083f640	move.w	#$80+(((vram_sprites)&$C000)>>14),(v_vdp_buffer2).w
00000e00 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000e04 4bf900c00004	lea	(vdp_control_port).l,a5
00000e0a 2abc940193c0	move.l	#$94000000+((((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF00)<<8)+$9300+(((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF),(a5)
00000e10 2abc96e69500	move.l	#$96000000+(((v_hscrolltablebuffer>>1)&$FF00)<<8)+$9500+((v_hscrolltablebuffer>>1)&$FF),(a5)
00000e16 3abc977f	move.w	#$9700+((((v_hscrolltablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000e1a 3abc7c00	move.w	#$4000+((vram_hscroll)&$3FFF),(a5)
00000e1e 31fc0083f640	move.w	#$80+(((vram_hscroll)&$C000)>>14),(v_vdp_buffer2).w
00000e24 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000e28 33fc000000a11100	move.w	#0,(z80_bus_request).l
00000e30 61003b30	bsr.w	PalCycle_SS
00000e34 4a38f767	tst.b	(f_sonframechg).w
00000e38 672a	beq.s	.nochg
00000e3a 4bf900c00004	lea	(vdp_control_port).l,a5
00000e40 2abc94019370	move.l	#$94000000+((((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF00)<<8)+$9300+(((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF),(a5)
00000e46 2abc96e49500	move.l	#$96000000+(((v_sgfx_buffer>>1)&$FF00)<<8)+$9500+((v_sgfx_buffer>>1)&$FF),(a5)
00000e4c 3abc977f	move.w	#$9700+((((v_sgfx_buffer>>1)&$FF0000)>>16)&$7F),(a5)
00000e50 3abc7000	move.w	#$4000+((ArtTile_Sonic*tile_size)&$3FFF),(a5)
00000e54 31fc0083f640	move.w	#$80+(((ArtTile_Sonic*tile_size)&$C000)>>14),(v_vdp_buffer2).w
00000e5a 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000e5e 11fc0000f767	move.b	#0,(f_sonframechg).w
00000e64 4a78f614	tst.w	(v_generictimer).w
00000e68 67000006	beq.w	.end
00000e6c 5378f614	subq.w	#1,(v_generictimer).w
00000e70 4e75	rts	
00000e72 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00000e7a 0839000000a11100	btst	#0,(z80_bus_request).l
00000e82 66f6	bne.s	.wait
00000e84 61000360	bsr.w	ReadJoypads
00000e88 4a38f64e	tst.b	(f_wtr_state).w
00000e8c 6626	bne.s	.waterabove
00000e8e 4bf900c00004	lea	(vdp_control_port).l,a5
00000e94 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00000e9a 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
00000ea0 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
00000ea4 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000ea8 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000eae 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000eb2 6024	bra.s	.waterbelow
00000eb4 4bf900c00004	lea	(vdp_control_port).l,a5
00000eba 2abc94009340	move.l	#$94000000+((((v_palette_water_end-v_palette_water)>>1)&$FF00)<<8)+$9300+(((v_palette_water_end-v_palette_water)>>1)&$FF),(a5)
00000ec0 2abc96fd9540	move.l	#$96000000+(((v_palette_water>>1)&$FF00)<<8)+$9500+((v_palette_water>>1)&$FF),(a5)
00000ec6 3abc977f	move.w	#$9700+((((v_palette_water>>1)&$FF0000)>>16)&$7F),(a5)
00000eca 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000ece 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000ed4 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000ed8 3ab8f624	move.w	(v_hblank_hreg).w,(a5)
00000edc 4bf900c00004	lea	(vdp_control_port).l,a5
00000ee2 2abc940193c0	move.l	#$94000000+((((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF00)<<8)+$9300+(((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF),(a5)
00000ee8 2abc96e69500	move.l	#$96000000+(((v_hscrolltablebuffer>>1)&$FF00)<<8)+$9500+((v_hscrolltablebuffer>>1)&$FF),(a5)
00000eee 3abc977f	move.w	#$9700+((((v_hscrolltablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000ef2 3abc7c00	move.w	#$4000+((vram_hscroll)&$3FFF),(a5)
00000ef6 31fc0083f640	move.w	#$80+(((vram_hscroll)&$C000)>>14),(v_vdp_buffer2).w
00000efc 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000f00 4bf900c00004	lea	(vdp_control_port).l,a5
00000f06 2abc94019340	move.l	#$94000000+((((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF00)<<8)+$9300+(((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF),(a5)
00000f0c 2abc96fc9500	move.l	#$96000000+(((v_spritetablebuffer>>1)&$FF00)<<8)+$9500+((v_spritetablebuffer>>1)&$FF),(a5)
00000f12 3abc977f	move.w	#$9700+((((v_spritetablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000f16 3abc7800	move.w	#$4000+((vram_sprites)&$3FFF),(a5)
00000f1a 31fc0083f640	move.w	#$80+(((vram_sprites)&$C000)>>14),(v_vdp_buffer2).w
00000f20 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000f24 4a38f767	tst.b	(f_sonframechg).w
00000f28 672a	beq.s	.nochg
00000f2a 4bf900c00004	lea	(vdp_control_port).l,a5
00000f30 2abc94019370	move.l	#$94000000+((((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF00)<<8)+$9300+(((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF),(a5)
00000f36 2abc96e49500	move.l	#$96000000+(((v_sgfx_buffer>>1)&$FF00)<<8)+$9500+((v_sgfx_buffer>>1)&$FF),(a5)
00000f3c 3abc977f	move.w	#$9700+((((v_sgfx_buffer>>1)&$FF0000)>>16)&$7F),(a5)
00000f40 3abc7000	move.w	#$4000+((ArtTile_Sonic*tile_size)&$3FFF),(a5)
00000f44 31fc0083f640	move.w	#$80+(((ArtTile_Sonic*tile_size)&$C000)>>14),(v_vdp_buffer2).w
00000f4a 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000f4e 11fc0000f767	move.b	#0,(f_sonframechg).w
00000f54 33fc000000a11100	move.w	#0,(z80_bus_request).l
00000f5c 4cf800fff700	movem.l	(v_screenposx).w,d0-d7
00000f62 48f800ffff10	movem.l	d0-d7,(v_screenposx_dup).w
00000f68 4cf80003f754	movem.l	(v_fg_scroll_flags).w,d0-d1
00000f6e 48f80003ff30	movem.l	d0-d1,(v_fg_scroll_flags_dup).w
00000f74 6100593c	bsr.w	LoadTilesAsYouMove
00000f78 4eb90001c024	jsr	(AnimateLevelGfx).l
00000f7e 4eb90001c6b8	jsr	(HUD_Update).l
00000f84 610006bc	bsr.w	ProcessPLC_9Tiles
00000f88 4e75	rts	
00000f8a 610000e2	bsr.w	VBlank_StandardTransfers
00000f8e 5238f628	addq.b	#1,(v_vblank_0e_counter).w
00000f92 11fc000ef62a	move.b	#id_VBlank_Unused0E,(v_vblank_routine).w
00000f98 4e75	rts	
00000f9a 610000d2	bsr.w	VBlank_StandardTransfers
00000f9e 3ab8f624	move.w	(v_hblank_hreg).w,(a5)
00000fa2 6000069e	bra.w	ProcessPLC_9Tiles
00000fa6 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00000fae 0839000000a11100	btst	#0,(z80_bus_request).l
00000fb6 66f6	bne.s	.wait
00000fb8 6100022c	bsr.w	ReadJoypads
00000fbc 4bf900c00004	lea	(vdp_control_port).l,a5
00000fc2 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00000fc8 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
00000fce 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
00000fd2 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
00000fd6 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
00000fdc 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00000fe0 4bf900c00004	lea	(vdp_control_port).l,a5
00000fe6 2abc94019340	move.l	#$94000000+((((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF00)<<8)+$9300+(((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF),(a5)
00000fec 2abc96fc9500	move.l	#$96000000+(((v_spritetablebuffer>>1)&$FF00)<<8)+$9500+((v_spritetablebuffer>>1)&$FF),(a5)
00000ff2 3abc977f	move.w	#$9700+((((v_spritetablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
00000ff6 3abc7800	move.w	#$4000+((vram_sprites)&$3FFF),(a5)
00000ffa 31fc0083f640	move.w	#$80+(((vram_sprites)&$C000)>>14),(v_vdp_buffer2).w
00001000 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00001004 4bf900c00004	lea	(vdp_control_port).l,a5
0000100a 2abc940193c0	move.l	#$94000000+((((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF00)<<8)+$9300+(((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF),(a5)
00001010 2abc96e69500	move.l	#$96000000+(((v_hscrolltablebuffer>>1)&$FF00)<<8)+$9500+((v_hscrolltablebuffer>>1)&$FF),(a5)
00001016 3abc977f	move.w	#$9700+((((v_hscrolltablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
0000101a 3abc7c00	move.w	#$4000+((vram_hscroll)&$3FFF),(a5)
0000101e 31fc0083f640	move.w	#$80+(((vram_hscroll)&$C000)>>14),(v_vdp_buffer2).w
00001024 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
00001028 33fc000000a11100	move.w	#0,(z80_bus_request).l
00001030 4a38f767	tst.b	(f_sonframechg).w
00001034 672a	beq.s	.nochg
00001036 4bf900c00004	lea	(vdp_control_port).l,a5
0000103c 2abc94019370	move.l	#$94000000+((((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF00)<<8)+$9300+(((v_sgfx_buffer_end-v_sgfx_buffer)>>1)&$FF),(a5)
00001042 2abc96e49500	move.l	#$96000000+(((v_sgfx_buffer>>1)&$FF00)<<8)+$9500+((v_sgfx_buffer>>1)&$FF),(a5)
00001048 3abc977f	move.w	#$9700+((((v_sgfx_buffer>>1)&$FF0000)>>16)&$7F),(a5)
0000104c 3abc7000	move.w	#$4000+((ArtTile_Sonic*tile_size)&$3FFF),(a5)
00001050 31fc0083f640	move.w	#$80+(((ArtTile_Sonic*tile_size)&$C000)>>14),(v_vdp_buffer2).w
00001056 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
0000105a 11fc0000f767	move.b	#0,(f_sonframechg).w
00001060 4a78f614	tst.w	(v_generictimer).w
00001064 67000006	beq.w	.end
00001068 5378f614	subq.w	#1,(v_generictimer).w
0000106c 4e75	rts	
0000106e 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00001076 0839000000a11100	btst	#0,(z80_bus_request).l
0000107e 66f6	bne.s	.wait
00001080 61000164	bsr.w	ReadJoypads
00001084 4a38f64e	tst.b	(f_wtr_state).w
00001088 6626	bne.s	.underwater
0000108a 4bf900c00004	lea	(vdp_control_port).l,a5
00001090 2abc94009340	move.l	#$94000000+((((v_palette_end-v_palette)>>1)&$FF00)<<8)+$9300+(((v_palette_end-v_palette)>>1)&$FF),(a5)
00001096 2abc96fd9580	move.l	#$96000000+(((v_palette>>1)&$FF00)<<8)+$9500+((v_palette>>1)&$FF),(a5)
0000109c 3abc977f	move.w	#$9700+((((v_palette>>1)&$FF0000)>>16)&$7F),(a5)
000010a0 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
000010a4 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
000010aa 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
000010ae 6024	bra.s	.rest
000010b0 4bf900c00004	lea	(vdp_control_port).l,a5
000010b6 2abc94009340	move.l	#$94000000+((((v_palette_water_end-v_palette_water)>>1)&$FF00)<<8)+$9300+(((v_palette_water_end-v_palette_water)>>1)&$FF),(a5)
000010bc 2abc96fd9540	move.l	#$96000000+(((v_palette_water>>1)&$FF00)<<8)+$9500+((v_palette_water>>1)&$FF),(a5)
000010c2 3abc977f	move.w	#$9700+((((v_palette_water>>1)&$FF0000)>>16)&$7F),(a5)
000010c6 3abcc000	move.w	#$C000+(0&$3FFF),(a5)
000010ca 31fc0080f640	move.w	#$80+((0&$C000)>>14),(v_vdp_buffer2).w
000010d0 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
000010d4 4bf900c00004	lea	(vdp_control_port).l,a5
000010da 2abc94019340	move.l	#$94000000+((((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF00)<<8)+$9300+(((v_spritetablebuffer_end-v_spritetablebuffer)>>1)&$FF),(a5)
000010e0 2abc96fc9500	move.l	#$96000000+(((v_spritetablebuffer>>1)&$FF00)<<8)+$9500+((v_spritetablebuffer>>1)&$FF),(a5)
000010e6 3abc977f	move.w	#$9700+((((v_spritetablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
000010ea 3abc7800	move.w	#$4000+((vram_sprites)&$3FFF),(a5)
000010ee 31fc0083f640	move.w	#$80+(((vram_sprites)&$C000)>>14),(v_vdp_buffer2).w
000010f4 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
000010f8 4bf900c00004	lea	(vdp_control_port).l,a5
000010fe 2abc940193c0	move.l	#$94000000+((((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF00)<<8)+$9300+(((v_hscrolltablebuffer_end-v_hscrolltablebuffer)>>1)&$FF),(a5)
00001104 2abc96e69500	move.l	#$96000000+(((v_hscrolltablebuffer>>1)&$FF00)<<8)+$9500+((v_hscrolltablebuffer>>1)&$FF),(a5)
0000110a 3abc977f	move.w	#$9700+((((v_hscrolltablebuffer>>1)&$FF0000)>>16)&$7F),(a5)
0000110e 3abc7c00	move.w	#$4000+((vram_hscroll)&$3FFF),(a5)
00001112 31fc0083f640	move.w	#$80+(((vram_hscroll)&$C000)>>14),(v_vdp_buffer2).w
00001118 3ab8f640	move.w	(v_vdp_buffer2).w,(a5)
0000111c 33fc000000a11100	move.w	#0,(z80_bus_request).l
00001124 4e75	rts	
00001126 46fc2700	move.w	#$2700,sr
0000112a 4a78f644	tst.w	(f_hblank_pal).w
0000112e 676c	beq.s	.nochg
00001130 31fc0000f644	move.w	#0,(f_hblank_pal).w
00001136 48e700c0	movem.l	a0-a1,-(sp)
0000113a 43f900c00000	lea	(vdp_data_port).l,a1
00001140 41f8fa80	lea	(v_palette_water).w,a0
00001144 237cc00000000004	move.l	#$C0000000,4(a1)
0000114c 2298	move.l	(a0)+,(a1)
0000114e 2298	move.l	(a0)+,(a1)
00001150 2298	move.l	(a0)+,(a1)
00001152 2298	move.l	(a0)+,(a1)
00001154 2298	move.l	(a0)+,(a1)
00001156 2298	move.l	(a0)+,(a1)
00001158 2298	move.l	(a0)+,(a1)
0000115a 2298	move.l	(a0)+,(a1)
0000115c 2298	move.l	(a0)+,(a1)
0000115e 2298	move.l	(a0)+,(a1)
00001160 2298	move.l	(a0)+,(a1)
00001162 2298	move.l	(a0)+,(a1)
00001164 2298	move.l	(a0)+,(a1)
00001166 2298	move.l	(a0)+,(a1)
00001168 2298	move.l	(a0)+,(a1)
0000116a 2298	move.l	(a0)+,(a1)
0000116c 2298	move.l	(a0)+,(a1)
0000116e 2298	move.l	(a0)+,(a1)
00001170 2298	move.l	(a0)+,(a1)
00001172 2298	move.l	(a0)+,(a1)
00001174 2298	move.l	(a0)+,(a1)
00001176 2298	move.l	(a0)+,(a1)
00001178 2298	move.l	(a0)+,(a1)
0000117a 2298	move.l	(a0)+,(a1)
0000117c 2298	move.l	(a0)+,(a1)
0000117e 2298	move.l	(a0)+,(a1)
00001180 2298	move.l	(a0)+,(a1)
00001182 2298	move.l	(a0)+,(a1)
00001184 2298	move.l	(a0)+,(a1)
00001186 2298	move.l	(a0)+,(a1)
00001188 2298	move.l	(a0)+,(a1)
0000118a 2298	move.l	(a0)+,(a1)
0000118c 337c8adf0004	move.w	#$8A00+223,4(a1)
00001192 4cdf0300	movem.l	(sp)+,a0-a1
00001196 4a38f64f	tst.b	(f_doupdatesinhblank).w
0000119a 6602	bne.s	.delayed_transfer
0000119c 4e73	rte	
0000119e 4238f64f	clr.b	(f_doupdatesinhblank).w
000011a2 48e7fffe	movem.l	d0-a6,-(sp)
000011a6 6100fbdc	bsr.w	VBlank_UpdateScreen
000011aa 4eb900071b4c	jsr	(UpdateMusic).l
000011b0 4cdf7fff	movem.l	(sp)+,d0-a6
000011b4 4e73	rte	
000011b6 33fc010000a11100	move.w	#$100,(z80_bus_request).l
000011be 0839000000a11100	btst	#0,(z80_bus_request).l
000011c6 66f6	bne.s	.wait
000011c8 7040	moveq	#$40,d0
000011ca 13c000a10009	move.b	d0,(port_1_control).l
000011d0 13c000a1000b	move.b	d0,(port_2_control).l
000011d6 13c000a1000d	move.b	d0,(expansion_control).l
000011dc 33fc000000a11100	move.w	#0,(z80_bus_request).l
000011e4 4e75	rts	
000011e6 41f8f604	lea	(v_jpadhold1).w,a0
000011ea 43f900a10003	lea	(port_1_data).l,a1
000011f0 6102	bsr.s	.read
000011f2 5449	addq.w	#2,a1
000011f4 12bc0000	move.b	#0,(a1)
000011f8 4e71	nop	
000011fa 4e71	nop	
000011fc 1011	move.b	(a1),d0
000011fe e508	lsl.b	#2,d0
00001200 020000c0	andi.b	#%11000000,d0
00001204 12bc0040	move.b	#$40,(a1)
00001208 4e71	nop	
0000120a 4e71	nop	
0000120c 1211	move.b	(a1),d1
0000120e 0201003f	andi.b	#%00111111,d1
00001212 8001	or.b	d1,d0
00001214 4600	not.b	d0
00001216 1210	move.b	(a0),d1
00001218 b101	eor.b	d0,d1
0000121a 10c0	move.b	d0,(a0)+
0000121c c200	and.b	d0,d1
0000121e 10c1	move.b	d1,(a0)+
00001220 4e75	rts	
00001222 41f900c00004	lea	(vdp_control_port).l,a0
00001228 43f900c00000	lea	(vdp_data_port).l,a1
0000122e 45f90000129e	lea	(VDPSetupArray).l,a2
00001234 7e12	moveq	#(VDPSetupArray_End-VDPSetupArray)/2-1,d7
00001236 309a	move.w	(a2)+,(a0)
00001238 51cffffc	dbf	d7,.setreg
0000123c 3039000012a0	move.w	(VDPSetupArray+2).l,d0
00001242 31c0f60c	move.w	d0,(v_vdp_buffer1).w
00001246 31fc8adff624	move.w	#$8A00+223,(v_hblank_hreg).w
0000124c 7000	moveq	#cBlack,d0
0000124e 23fcc000000000c00004	move.l	#$C0000000,(vdp_control_port).l
00001258 3e3c003f	move.w	#($80)/2-1,d7
0000125c 3280	move.w	d0,(a1)
0000125e 51cffffc	dbf	d7,.clrCRAM
00001262 42b8f616	clr.l	(v_scrposy_vdp).w
00001266 42b8f61a	clr.l	(v_scrposx_vdp).w
0000126a 2f01	move.l	d1,-(sp)
0000126c 4bf900c00004	lea	(vdp_control_port).l,a5
00001272 3abc8f01	move.w	#$8F01,(a5)
00001276 2abc94ff93ff	move.l	#$94000000+(((($10000)-(0)-1)&$FF00)<<8)+$9300+((($10000)-(0)-1)&$FF),(a5)
0000127c 3abc9780	move.w	#$9780,(a5)
00001280 2abc40000080	move.l	#$40000080+(((0)&$3FFF)<<16)+(((0)&$C000)>>14),(a5)
00001286 33fc000000c00000	move.w	#(0)|(0)<<8,(vdp_data_port).l
0000128e 3215	move.w	(a5),d1
00001290 08010001	btst	#1,d1
00001294 66f8	bne.s	.wait
00001296 3abc8f02	move.w	#$8F02,(a5)
0000129a 221f	move.l	(sp)+,d1
0000129c 4e75	rts	
000012c4 4bf900c00004	lea	(vdp_control_port).l,a5
000012ca 3abc8f01	move.w	#$8F01,(a5)
000012ce 2abc940f93ff	move.l	#$94000000+((((vram_fg+plane_size_64x32)-(vram_fg)-1)&$FF00)<<8)+$9300+(((vram_fg+plane_size_64x32)-(vram_fg)-1)&$FF),(a5)
000012d4 3abc9780	move.w	#$9780,(a5)
000012d8 2abc40000083	move.l	#$40000080+(((vram_fg)&$3FFF)<<16)+(((vram_fg)&$C000)>>14),(a5)
000012de 33fc000000c00000	move.w	#(0)|(0)<<8,(vdp_data_port).l
000012e6 3215	move.w	(a5),d1
000012e8 08010001	btst	#1,d1
000012ec 66f8	bne.s	.wait
000012ee 3abc8f02	move.w	#$8F02,(a5)
000012f2 4bf900c00004	lea	(vdp_control_port).l,a5
000012f8 3abc8f01	move.w	#$8F01,(a5)
000012fc 2abc940f93ff	move.l	#$94000000+((((vram_bg+plane_size_64x32)-(vram_bg)-1)&$FF00)<<8)+$9300+(((vram_bg+plane_size_64x32)-(vram_bg)-1)&$FF),(a5)
00001302 3abc9780	move.w	#$9780,(a5)
00001306 2abc60000083	move.l	#$40000080+(((vram_bg)&$3FFF)<<16)+(((vram_bg)&$C000)>>14),(a5)
0000130c 33fc000000c00000	move.w	#(0)|(0)<<8,(vdp_data_port).l
00001314 3215	move.w	(a5),d1
00001316 08010001	btst	#1,d1
0000131a 66f8	bne.s	.wait
0000131c 3abc8f02	move.w	#$8F02,(a5)
00001320 21fc00000000f616	move.l	#0,(v_scrposy_vdp).w
00001328 21fc00000000f61a	move.l	#0,(v_scrposx_vdp).w
00001330 43f8f800	lea	(v_spritetablebuffer).w,a1
00001334 7000	moveq	#0,d0
00001336 323c00a0	move.w	#.length/4-1,d1
0000133a 22c0	move.l	d0,(a1)+
0000133c 51c9fffc	dbf	d1,.loop
00001340 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00001344 7000	moveq	#0,d0
00001346 323c0100	move.w	#.length/4-1,d1
0000134a 22c0	move.l	d0,(a1)+
0000134c 51c9fffc	dbf	d1,.loop
00001350 4e75	rts	
00001352 4e71	nop	
00001354 33fc010000a11100	move.w	#$100,(z80_bus_request).l
0000135c 33fc010000a11200	move.w	#$100,(z80_reset).l
00001364 41f900072e7c	lea	(DACDriver).l,a0
0000136a 43f900a00000	lea	(z80_ram).l,a1
00001370 6100052a	bsr.w	KosDec
00001374 33fc000000a11200	move.w	#0,(z80_reset).l
0000137c 4e71	nop	
0000137e 4e71	nop	
00001380 4e71	nop	
00001382 4e71	nop	
00001384 33fc010000a11200	move.w	#$100,(z80_reset).l
0000138c 33fc000000a11100	move.w	#0,(z80_bus_request).l
00001394 4e75	rts	
00001396 11c0f00a	move.b	d0,(v_snddriver_ram.v_soundqueue0).w
0000139a 4e75	rts	
0000139c 11c0f00b	move.b	d0,(v_snddriver_ram.v_soundqueue1).w
000013a0 4e75	rts	
000013a2 11c0f00c	move.b	d0,(v_snddriver_ram.v_soundqueue2).w
000013a6 4e75	rts	
000013a8 4e71	nop	
000013aa 4a38fe12	tst.b	(v_lives).w
000013ae 675a	beq.s	Unpause
000013b0 4a78f63a	tst.w	(f_pause).w
000013b4 6608	bne.s	Pause_StopGame
000013b6 08380007f605	btst	#bitStart,(v_jpadpress1).w
000013bc 6752	beq.s	Pause_DoNothing
000013be 31fc0001f63a	move.w	#1,(f_pause).w
000013c4 11fc0001f003	move.b	#1,(v_snddriver_ram.f_pausemusic).w
000013ca 11fc0010f62a	move.b	#id_VBlank_Paused,(v_vblank_routine).w
000013d0 610015d6	bsr.w	WaitForVBlank
000013d4 4a38ffe1	tst.b	(f_slomocheat).w
000013d8 6722	beq.s	Pause_ChkStart
000013da 08380006f605	btst	#bitA,(v_jpadpress1).w
000013e0 670a	beq.s	Pause_ChkBC
000013e2 11fc0004f600	move.b	#id_Title,(v_gamemode).w
000013e8 4e71	nop	
000013ea 6018	bra.s	Pause_EndMusic
000013ec 08380004f604	btst	#bitB,(v_jpadhold1).w
000013f2 661e	bne.s	Pause_SlowMo
000013f4 08380005f605	btst	#bitC,(v_jpadpress1).w
000013fa 6616	bne.s	Pause_SlowMo
000013fc 08380007f605	btst	#bitStart,(v_jpadpress1).w
00001402 67c6	beq.s	Pause_Loop
00001404 11fc0080f003	move.b	#$80,(v_snddriver_ram.f_pausemusic).w
0000140a 31fc0000f63a	move.w	#0,(f_pause).w
00001410 4e75	rts	
00001412 31fc0001f63a	move.w	#1,(f_pause).w
00001418 11fc0080f003	move.b	#$80,(v_snddriver_ram.f_pausemusic).w
0000141e 4e75	rts	
00001420 4df900c00000	lea	(vdp_data_port).l,a6
00001426 283c00800000	move.l	#$800000,d4
0000142c 2d400004	move.l	d0,4(a6)
00001430 3601	move.w	d1,d3
00001432 3c99	move.w	(a1)+,(a6)
00001434 51cbfffc	dbf	d3,Tilemap_Cell
00001438 d084	add.l	d4,d0
0000143a 51cafff0	dbf	d2,Tilemap_Line
0000143e 4e75	rts	
00001440 48e7ffdc	movem.l	d0-a1/a3-a5,-(sp)
00001444 47f900001502	lea	(NemPCD_WriteRowToVDP).l,a3
0000144a 49f900c00000	lea	(vdp_data_port).l,a4
00001450 600a	bra.s	NemDecMain
00001452 48e7ffdc	movem.l	d0-a1/a3-a5,-(sp)
00001456 47f900001518	lea	(NemPCD_WriteRowToRAM).l,a3
0000145c 43f8aa00	lea	(v_ngfx_buffer).w,a1
00001460 3418	move.w	(a0)+,d2
00001462 e34a	lsl.w	#1,d2
00001464 6404	bcc.s	loc_146A
00001466 d6fc000a	adda.w	#NemPCD_WriteRowToVDP_XOR-NemPCD_WriteRowToVDP,a3
0000146a e54a	lsl.w	#2,d2
0000146c 3a42	movea.w	d2,a5
0000146e 7608	moveq	#8,d3
00001470 7400	moveq	#0,d2
00001472 7800	moveq	#0,d4
00001474 610000b8	bsr.w	NemDec_BuildCodeTable
00001478 1a18	move.b	(a0)+,d5
0000147a e145	asl.w	#8,d5
0000147c 1a18	move.b	(a0)+,d5
0000147e 3c3c0010	move.w	#$10,d6
00001482 6106	bsr.s	NemDec_ProcessCompressedData
00001484 4cdf3bff	movem.l	(sp)+,d0-a1/a3-a5
00001488 4e75	rts	
0000148a 3e06	move.w	d6,d7
0000148c 5147	subq.w	#8,d7
0000148e 3205	move.w	d5,d1
00001490 ee69	lsr.w	d7,d1
00001492 0c0100fc	cmpi.b	#%11111100,d1
00001496 643e	bhs.s	NemPCD_InlineData
00001498 024100ff	andi.w	#$FF,d1
0000149c d241	add.w	d1,d1
0000149e 10311000	move.b	(a1,d1.w),d0
000014a2 4880	ext.w	d0
000014a4 9c40	sub.w	d0,d6
000014a6 0c460009	cmpi.w	#9,d6
000014aa 6406	bhs.s	loc_14B2
000014ac 5046	addq.w	#8,d6
000014ae e145	asl.w	#8,d5
000014b0 1a18	move.b	(a0)+,d5
000014b2 12311001	move.b	1(a1,d1.w),d1
000014b6 3001	move.w	d1,d0
000014b8 0241000f	andi.w	#$F,d1
000014bc 024000f0	andi.w	#$F0,d0
000014c0 e848	lsr.w	#4,d0
000014c2 e98c	lsl.l	#4,d4
000014c4 8801	or.b	d1,d4
000014c6 5343	subq.w	#1,d3
000014c8 6606	bne.s	NemPCD_WritePixel_Loop
000014ca 4ed3	jmp	(a3)
000014cc 7800	moveq	#0,d4
000014ce 7608	moveq	#8,d3
000014d0 51c8fff0	dbf	d0,NemPCD_WritePixel
000014d4 60b4	bra.s	NemDec_ProcessCompressedData
000014d6 5d46	subq.w	#6,d6
000014d8 0c460009	cmpi.w	#9,d6
000014dc 6406	bhs.s	loc_14E4
000014de 5046	addq.w	#8,d6
000014e0 e145	asl.w	#8,d5
000014e2 1a18	move.b	(a0)+,d5
000014e4 5f46	subq.w	#7,d6
000014e6 3205	move.w	d5,d1
000014e8 ec69	lsr.w	d6,d1
000014ea 3001	move.w	d1,d0
000014ec 0241000f	andi.w	#$F,d1
000014f0 02400070	andi.w	#$70,d0
000014f4 0c460009	cmpi.w	#9,d6
000014f8 64c6	bhs.s	NemPCD_ProcessCompressedData
000014fa 5046	addq.w	#8,d6
000014fc e145	asl.w	#8,d5
000014fe 1a18	move.b	(a0)+,d5
00001500 60be	bra.s	NemPCD_ProcessCompressedData
00001502 2884	move.l	d4,(a4)
00001504 534d	subq.w	#1,a5
00001506 380d	move.w	a5,d4
00001508 66c2	bne.s	NemPCD_NewRow
0000150a 4e75	rts	
0000150c b982	eor.l	d4,d2
0000150e 2882	move.l	d2,(a4)
00001510 534d	subq.w	#1,a5
00001512 380d	move.w	a5,d4
00001514 66b6	bne.s	NemPCD_NewRow
00001516 4e75	rts	
00001518 28c4	move.l	d4,(a4)+
0000151a 534d	subq.w	#1,a5
0000151c 380d	move.w	a5,d4
0000151e 66ac	bne.s	NemPCD_NewRow
00001520 4e75	rts	
00001522 b982	eor.l	d4,d2
00001524 28c2	move.l	d2,(a4)+
00001526 534d	subq.w	#1,a5
00001528 380d	move.w	a5,d4
0000152a 66a0	bne.s	NemPCD_NewRow
0000152c 4e75	rts	
0000152e 1018	move.b	(a0)+,d0
00001530 0c0000ff	cmpi.b	#$FF,d0
00001534 6602	bne.s	NemBCT_NewPALIndex
00001536 4e75	rts	
00001538 3e00	move.w	d0,d7
0000153a 1018	move.b	(a0)+,d0
0000153c 0c000080	cmpi.b	#$80,d0
00001540 64ee	bhs.s	NemBCT_ChkEnd
00001542 1200	move.b	d0,d1
00001544 0247000f	andi.w	#$F,d7
00001548 02410070	andi.w	#$70,d1
0000154c 8e41	or.w	d1,d7
0000154e 0240000f	andi.w	#$F,d0
00001552 1200	move.b	d0,d1
00001554 e149	lsl.w	#8,d1
00001556 8e41	or.w	d1,d7
00001558 7208	moveq	#8,d1
0000155a 9240	sub.w	d0,d1
0000155c 660a	bne.s	NemBCT_ShortCode
0000155e 1018	move.b	(a0)+,d0
00001560 d040	add.w	d0,d0
00001562 33870000	move.w	d7,(a1,d0.w)
00001566 60d2	bra.s	NemBCT_Loop
00001568 1018	move.b	(a0)+,d0
0000156a e368	lsl.w	d1,d0
0000156c d040	add.w	d0,d0
0000156e 7a01	moveq	#1,d5
00001570 e36d	lsl.w	d1,d5
00001572 5345	subq.w	#1,d5
00001574 33870000	move.w	d7,(a1,d0.w)
00001578 5440	addq.w	#2,d0
0000157a 51cdfff8	dbf	d5,NemBCT_ShortCode_Loop
0000157e 60ba	bra.s	NemBCT_Loop
00001580 48e70060	movem.l	a1-a2,-(sp)
00001584 43f90001d612	lea	(ArtLoadCues).l,a1
0000158a d040	add.w	d0,d0
0000158c 30310000	move.w	(a1,d0.w),d0
00001590 43f10000	lea	(a1,d0.w),a1
00001594 45f8f680	lea	(v_plc_buffer).w,a2
00001598 4a92	tst.l	(a2)
0000159a 6704	beq.s	.copytoRAM
0000159c 5c4a	addq.w	#plc_slot_size,a2
0000159e 60f8	bra.s	.findspace
000015a0 3019	move.w	(a1)+,d0
000015a2 6b08	bmi.s	.return
000015a4 24d9	move.l	(a1)+,(a2)+
000015a6 34d9	move.w	(a1)+,(a2)+
000015a8 51c8fffa	dbf	d0,.loop
000015ac 4cdf0600	movem.l	(sp)+,a1-a2
000015b0 4e75	rts	
000015b2 48e70060	movem.l	a1-a2,-(sp)
000015b6 43f90001d612	lea	(ArtLoadCues).l,a1
000015bc d040	add.w	d0,d0
000015be 30310000	move.w	(a1,d0.w),d0
000015c2 43f10000	lea	(a1,d0.w),a1
000015c6 6116	bsr.s	ClearPLC
000015c8 45f8f680	lea	(v_plc_buffer).w,a2
000015cc 3019	move.w	(a1)+,d0
000015ce 6b08	bmi.s	.return
000015d0 24d9	move.l	(a1)+,(a2)+
000015d2 34d9	move.w	(a1)+,(a2)+
000015d4 51c8fffa	dbf	d0,.loop
000015d8 4cdf0600	movem.l	(sp)+,a1-a2
000015dc 4e75	rts	
000015de 45f8f680	lea	(v_plc_buffer).w,a2
000015e2 701f	moveq	#(v_plc_buffer_end-v_plc_buffer)/4-1,d0
000015e4 429a	clr.l	(a2)+
000015e6 51c8fffc	dbf	d0,.loop
000015ea 4e75	rts	
000015ec 4ab8f680	tst.l	(v_plc_buffer).w
000015f0 674e	beq.s	.return
000015f2 4a78f6f8	tst.w	(v_plc_patternsleft).w
000015f6 6648	bne.s	.return
000015f8 2078f680	movea.l	(v_plc_buffer).w,a0
000015fc 47f900001502	lea	(NemPCD_WriteRowToVDP).l,a3
00001602 43f8aa00	lea	(v_ngfx_buffer).w,a1
00001606 3418	move.w	(a0)+,d2
00001608 6a04	bpl.s	.skipXor
0000160a d6fc000a	adda.w	#NemPCD_WriteRowToVDP_XOR-NemPCD_WriteRowToVDP,a3
0000160e 02427fff	andi.w	#$7FFF,d2
00001612 31c2f6f8	move.w	d2,(v_plc_patternsleft).w
00001616 6100ff16	bsr.w	NemDec_BuildCodeTable
0000161a 1a18	move.b	(a0)+,d5
0000161c e145	asl.w	#8,d5
0000161e 1a18	move.b	(a0)+,d5
00001620 7c10	moveq	#$10,d6
00001622 7000	moveq	#0,d0
00001624 21c8f680	move.l	a0,(v_plc_buffer).w
00001628 21cbf6e0	move.l	a3,(v_plc_ptrnemcode).w
0000162c 21c0f6e4	move.l	d0,(v_plc_repeatcount).w
00001630 21c0f6e8	move.l	d0,(v_plc_paletteindex).w
00001634 21c0f6ec	move.l	d0,(v_plc_previousrow).w
00001638 21c5f6f0	move.l	d5,(v_plc_dataword).w
0000163c 21c6f6f4	move.l	d6,(v_plc_shiftvalue).w
00001640 4e75	rts	
00001642 4a78f6f8	tst.w	(v_plc_patternsleft).w
00001646 67000092	beq.w	ProcessPLC_Return
0000164a 31fc0009f6fa	move.w	#9,(v_plc_framepatternsleft).w
00001650 7000	moveq	#0,d0
00001652 3038f684	move.w	(v_plc_buffer_dest).w,d0
00001656 06780120f684	addi.w	#9*tile_size,(v_plc_buffer_dest).w
0000165c 6018	bra.s	ProcessPLC
0000165e 4a78f6f8	tst.w	(v_plc_patternsleft).w
00001662 6776	beq.s	ProcessPLC_Return
00001664 31fc0003f6fa	move.w	#3,(v_plc_framepatternsleft).w
0000166a 7000	moveq	#0,d0
0000166c 3038f684	move.w	(v_plc_buffer_dest).w,d0
00001670 06780060f684	addi.w	#3*tile_size,(v_plc_buffer_dest).w
00001676 49f900c00004	lea	(vdp_control_port).l,a4
0000167c e588	lsl.l	#2,d0
0000167e e448	lsr.w	#2,d0
00001680 00404000	ori.w	#$4000,d0
00001684 4840	swap	d0
00001686 2880	move.l	d0,(a4)
00001688 594c	subq.w	#4,a4
0000168a 2078f680	movea.l	(v_plc_buffer).w,a0
0000168e 2678f6e0	movea.l	(v_plc_ptrnemcode).w,a3
00001692 2038f6e4	move.l	(v_plc_repeatcount).w,d0
00001696 2238f6e8	move.l	(v_plc_paletteindex).w,d1
0000169a 2438f6ec	move.l	(v_plc_previousrow).w,d2
0000169e 2a38f6f0	move.l	(v_plc_dataword).w,d5
000016a2 2c38f6f4	move.l	(v_plc_shiftvalue).w,d6
000016a6 43f8aa00	lea	(v_ngfx_buffer).w,a1
000016aa 3a7c0008	movea.w	#8,a5
000016ae 6100fe1c	bsr.w	NemPCD_NewRow
000016b2 5378f6f8	subq.w	#1,(v_plc_patternsleft).w
000016b6 6724	beq.s	ProcessPLC_ShiftCue
000016b8 5378f6fa	subq.w	#1,(v_plc_framepatternsleft).w
000016bc 66ec	bne.s	.loop
000016be 21c8f680	move.l	a0,(v_plc_buffer).w
000016c2 21cbf6e0	move.l	a3,(v_plc_ptrnemcode).w
000016c6 21c0f6e4	move.l	d0,(v_plc_repeatcount).w
000016ca 21c1f6e8	move.l	d1,(v_plc_paletteindex).w
000016ce 21c2f6ec	move.l	d2,(v_plc_previousrow).w
000016d2 21c5f6f0	move.l	d5,(v_plc_dataword).w
000016d6 21c6f6f4	move.l	d6,(v_plc_shiftvalue).w
000016da 4e75	rts	
000016dc 41f8f680	lea	(v_plc_buffer).w,a0
000016e0 7015	moveq	#(v_plc_buffer_only_end-v_plc_buffer-plc_slot_size)/4-1,d0
000016e2 20e80006	move.l	plc_slot_size(a0),(a0)+
000016e6 51c8fffa	dbf	d0,.loop
000016ea 4e75	rts	
000016ec 43f90001d612	lea	(ArtLoadCues).l,a1
000016f2 d040	add.w	d0,d0
000016f4 30310000	move.w	(a1,d0.w),d0
000016f8 43f10000	lea	(a1,d0.w),a1
000016fc 3219	move.w	(a1)+,d1
000016fe 2059	movea.l	(a1)+,a0
00001700 7000	moveq	#0,d0
00001702 3019	move.w	(a1)+,d0
00001704 e588	lsl.l	#2,d0
00001706 e448	lsr.w	#2,d0
00001708 00404000	ori.w	#$4000,d0
0000170c 4840	swap	d0
0000170e 23c000c00004	move.l	d0,(vdp_control_port).l
00001714 6100fd2a	bsr.w	NemDec
00001718 51c9ffe4	dbf	d1,.loop
0000171c 4e75	rts	
0000171e 48e7ff7c	movem.l	d0-d7/a1-a5,-(sp)
00001722 3640	movea.w	d0,a3
00001724 1018	move.b	(a0)+,d0
00001726 4880	ext.w	d0
00001728 3a40	movea.w	d0,a5
0000172a 1818	move.b	(a0)+,d4
0000172c e70c	lsl.b	#3,d4
0000172e 3458	movea.w	(a0)+,a2
00001730 d4cb	adda.w	a3,a2
00001732 3858	movea.w	(a0)+,a4
00001734 d8cb	adda.w	a3,a4
00001736 1a18	move.b	(a0)+,d5
00001738 e145	asl.w	#8,d5
0000173a 1a18	move.b	(a0)+,d5
0000173c 7c10	moveq	#16,d6
0000173e 7007	moveq	#7,d0
00001740 3e06	move.w	d6,d7
00001742 9e40	sub.w	d0,d7
00001744 3205	move.w	d5,d1
00001746 ee69	lsr.w	d7,d1
00001748 0241007f	andi.w	#$7F,d1
0000174c 3401	move.w	d1,d2
0000174e 0c410040	cmpi.w	#$40,d1
00001752 6404	bhs.s	.sevenbitentry
00001754 7006	moveq	#6,d0
00001756 e24a	lsr.w	#1,d2
00001758 61000132	bsr.w	EniDec_FetchByte
0000175c 0242000f	andi.w	#$F,d2
00001760 e849	lsr.w	#4,d1
00001762 d241	add.w	d1,d1
00001764 4efb104e	jmp	EniDec_Index(pc,d1.w)
00001768 32ca	move.w	a2,(a1)+
0000176a 524a	addq.w	#1,a2
0000176c 51cafffa	dbf	d2,.loop
00001770 60cc	bra.s	Eni_Loop
00001772 32cc	move.w	a4,(a1)+
00001774 51cafffc	dbf	d2,.loop
00001778 60c4	bra.s	Eni_Loop
0000177a 61000060	bsr.w	EniDec_FetchInlineValue
0000177e 32c1	move.w	d1,(a1)+
00001780 51cafffc	dbf	d2,.loop
00001784 60b8	bra.s	Eni_Loop
00001786 61000054	bsr.w	EniDec_FetchInlineValue
0000178a 32c1	move.w	d1,(a1)+
0000178c 5241	addq.w	#1,d1
0000178e 51cafffa	dbf	d2,.loop
00001792 60aa	bra.s	Eni_Loop
00001794 61000046	bsr.w	EniDec_FetchInlineValue
00001798 32c1	move.w	d1,(a1)+
0000179a 5341	subq.w	#1,d1
0000179c 51cafffa	dbf	d2,.loop
000017a0 609c	bra.s	Eni_Loop
000017a2 0c42000f	cmpi.w	#$F,d2
000017a6 671c	beq.s	EniDec_Done
000017a8 61000032	bsr.w	EniDec_FetchInlineValue
000017ac 32c1	move.w	d1,(a1)+
000017ae 51cafff8	dbf	d2,.loop
000017b2 608a	bra.s	Eni_Loop
000017b4 60b2	bra.s	EniDec_00
000017b6 60b0	bra.s	EniDec_00
000017b8 60b8	bra.s	EniDec_01
000017ba 60b6	bra.s	EniDec_01
000017bc 60bc	bra.s	EniDec_100
000017be 60c6	bra.s	EniDec_101
000017c0 60d2	bra.s	EniDec_110
000017c2 60de	bra.s	EniDec_111
000017c4 5348	subq.w	#1,a0
000017c6 0c460010	cmpi.w	#16,d6
000017ca 6602	bne.s	.notnewbyte
000017cc 5348	subq.w	#1,a0
000017ce 3008	move.w	a0,d0
000017d0 e248	lsr.w	#1,d0
000017d2 6402	bcc.s	.evenbyte
000017d4 5248	addq.w	#1,a0
000017d6 4cdf3eff	movem.l	(sp)+,d0-d7/a1-a5
000017da 4e75	rts	
000017dc 360b	move.w	a3,d3
000017de 1204	move.b	d4,d1
000017e0 d201	add.b	d1,d1
000017e2 640a	bcc.s	.skippriority
000017e4 5346	subq.w	#1,d6
000017e6 0d05	btst	d6,d5
000017e8 6704	beq.s	.skippriority
000017ea 00438000	ori.w	#$8000,d3
000017ee d201	add.b	d1,d1
000017f0 640a	bcc.s	.skiphighpal
000017f2 5346	subq.w	#1,d6
000017f4 0d05	btst	d6,d5
000017f6 6704	beq.s	.skiphighpal
000017f8 06434000	addi.w	#$4000,d3
000017fc d201	add.b	d1,d1
000017fe 640a	bcc.s	.skiplowpal
00001800 5346	subq.w	#1,d6
00001802 0d05	btst	d6,d5
00001804 6704	beq.s	.skiplowpal
00001806 06432000	addi.w	#$2000,d3
0000180a d201	add.b	d1,d1
0000180c 640a	bcc.s	.skipyflip
0000180e 5346	subq.w	#1,d6
00001810 0d05	btst	d6,d5
00001812 6704	beq.s	.skipyflip
00001814 00431000	ori.w	#$1000,d3
00001818 d201	add.b	d1,d1
0000181a 640a	bcc.s	.skipxflip
0000181c 5346	subq.w	#1,d6
0000181e 0d05	btst	d6,d5
00001820 6704	beq.s	.skipxflip
00001822 00430800	ori.w	#$800,d3
00001826 3205	move.w	d5,d1
00001828 3e06	move.w	d6,d7
0000182a 9e4d	sub.w	a5,d7
0000182c 6428	bcc.s	.enoughbits
0000182e 3c07	move.w	d7,d6
00001830 06460010	addi.w	#16,d6
00001834 4447	neg.w	d7
00001836 ef69	lsl.w	d7,d1
00001838 1a10	move.b	(a0),d5
0000183a ef3d	rol.b	d7,d5
0000183c de47	add.w	d7,d7
0000183e ca7b702a	and.w	EniDec_Masks-2(pc,d7.w),d5
00001842 d245	add.w	d5,d1
00001844 300d	move.w	a5,d0
00001846 d040	add.w	d0,d0
00001848 c27b0020	and.w	EniDec_Masks-2(pc,d0.w),d1
0000184c d243	add.w	d3,d1
0000184e 1a18	move.b	(a0)+,d5
00001850 e14d	lsl.w	#8,d5
00001852 1a18	move.b	(a0)+,d5
00001854 4e75	rts	
00001856 6710	beq.s	.justenough
00001858 ee69	lsr.w	d7,d1
0000185a 300d	move.w	a5,d0
0000185c d040	add.w	d0,d0
0000185e c27b000a	and.w	EniDec_Masks-2(pc,d0.w),d1
00001862 d243	add.w	d3,d1
00001864 300d	move.w	a5,d0
00001866 6024	bra.s	EniDec_FetchByte
00001868 7c10	moveq	#16,d6
0000186a 60d8	bra.s	.maskvalue
0000188c 9c40	sub.w	d0,d6
0000188e 0c460009	cmpi.w	#9,d6
00001892 6406	bhs.s	.locret
00001894 5046	addq.w	#8,d6
00001896 e145	asl.w	#8,d5
00001898 1a18	move.b	(a0)+,d5
0000189a 4e75	rts	
0000189c 558f	subq.l	#2,sp
0000189e 1f580001	move.b	(a0)+,1(sp)
000018a2 1e98	move.b	(a0)+,(sp)
000018a4 3a17	move.w	(sp),d5
000018a6 780f	moveq	#$F,d4
000018a8 e24d	lsr.w	#1,d5
000018aa 40c6	move.w	sr,d6
000018ac 51cc000c	dbf	d4,.chkbit
000018b0 1f580001	move.b	(a0)+,1(sp)
000018b4 1e98	move.b	(a0)+,(sp)
000018b6 3a17	move.w	(sp),d5
000018b8 780f	moveq	#$F,d4
000018ba 44c6	move.w	d6,ccr
000018bc 6404	bcc.s	Kos_RLE
000018be 12d8	move.b	(a0)+,(a1)+
000018c0 60e6	bra.s	Kos_Loop
000018c2 7600	moveq	#0,d3
000018c4 e24d	lsr.w	#1,d5
000018c6 40c6	move.w	sr,d6
000018c8 51cc000c	dbf	d4,.chkbit
000018cc 1f580001	move.b	(a0)+,1(sp)
000018d0 1e98	move.b	(a0)+,(sp)
000018d2 3a17	move.w	(sp),d5
000018d4 780f	moveq	#$F,d4
000018d6 44c6	move.w	d6,ccr
000018d8 652c	bcs.s	Kos_SeparateRLE
000018da e24d	lsr.w	#1,d5
000018dc 51cc000c	dbf	d4,.loop1
000018e0 1f580001	move.b	(a0)+,1(sp)
000018e4 1e98	move.b	(a0)+,(sp)
000018e6 3a17	move.w	(sp),d5
000018e8 780f	moveq	#$F,d4
000018ea e353	roxl.w	#1,d3
000018ec e24d	lsr.w	#1,d5
000018ee 51cc000c	dbf	d4,.loop2
000018f2 1f580001	move.b	(a0)+,1(sp)
000018f6 1e98	move.b	(a0)+,(sp)
000018f8 3a17	move.w	(sp),d5
000018fa 780f	moveq	#$F,d4
000018fc e353	roxl.w	#1,d3
000018fe 5243	addq.w	#1,d3
00001900 74ff	moveq	#-1,d2
00001902 1418	move.b	(a0)+,d2
00001904 6016	bra.s	Kos_RLELoop
00001906 1018	move.b	(a0)+,d0
00001908 1218	move.b	(a0)+,d1
0000190a 74ff	moveq	#-1,d2
0000190c 1401	move.b	d1,d2
0000190e eb4a	lsl.w	#5,d2
00001910 1400	move.b	d0,d2
00001912 02410007	andi.w	#7,d1
00001916 6710	beq.s	Kos_SeparateRLE2
00001918 1601	move.b	d1,d3
0000191a 5243	addq.w	#1,d3
0000191c 10312000	move.b	(a1,d2.w),d0
00001920 12c0	move.b	d0,(a1)+
00001922 51cbfff8	dbf	d3,Kos_RLELoop
00001926 6080	bra.s	Kos_Loop
00001928 1218	move.b	(a0)+,d1
0000192a 670c	beq.s	Kos_Done
0000192c 0c010001	cmpi.b	#1,d1
00001930 6700ff76	beq.w	Kos_Loop
00001934 1601	move.b	d1,d3
00001936 60e4	bra.s	Kos_RLELoop
00001938 548f	addq.l	#2,sp
0000193a 4e75	rts	
0000193c 7400	moveq	#0,d2
0000193e 7000	moveq	#0,d0
00001940 1038fe10	move.b	(v_zone).w,d0
00001944 d040	add.w	d0,d0
00001946 303b0006	move.w	PalCycle_Index(pc,d0.w),d0
0000194a 4efb0002	jmp	PalCycle_Index(pc,d0.w)
0000195c 41f900001b66	lea	(Pal_TitleCyc).l,a0
00001962 6006	bra.s	PCycGHZ_Go
00001964 41f900001b86	lea	(Pal_GHZCyc).l,a0
0000196a 5378f634	subq.w	#1,(v_pcyc_time).w
0000196e 6a20	bpl.s	PCycGHZ_Skip
00001970 31fc0005f634	move.w	#5,(v_pcyc_time).w
00001976 3038f632	move.w	(v_pcyc_num).w,d0
0000197a 5278f632	addq.w	#1,(v_pcyc_num).w
0000197e 02400003	andi.w	#3,d0
00001982 e748	lsl.w	#3,d0
00001984 43f8fb50	lea	(v_palette+$50).w,a1
00001988 22f00000	move.l	(a0,d0.w),(a1)+
0000198c 22b00004	move.l	4(a0,d0.w),(a1)
00001990 4e75	rts	
00001992 5378f634	subq.w	#1,(v_pcyc_time).w
00001996 6a40	bpl.s	PCycLZ_Skip1
00001998 31fc0002f634	move.w	#2,(v_pcyc_time).w
0000199e 3038f632	move.w	(v_pcyc_num).w,d0
000019a2 5278f632	addq.w	#1,(v_pcyc_num).w
000019a6 02400003	andi.w	#3,d0
000019aa e748	lsl.w	#3,d0
000019ac 41f900001ba6	lea	(Pal_LZCyc1).l,a0
000019b2 0c380003fe11	cmpi.b	#act4,(v_act).w
000019b8 6606	bne.s	PCycLZ_NotSBZ3
000019ba 41f900001bea	lea	(Pal_SBZ3Cyc).l,a0
000019c0 43f8fb56	lea	(v_palette+$56).w,a1
000019c4 22f00000	move.l	(a0,d0.w),(a1)+
000019c8 22b00004	move.l	4(a0,d0.w),(a1)
000019cc 43f8fad6	lea	(v_palette_water+$56).w,a1
000019d0 22f00000	move.l	(a0,d0.w),(a1)+
000019d4 22b00004	move.l	4(a0,d0.w),(a1)
000019d8 3038fe04	move.w	(v_framecount).w,d0
000019dc 02400007	andi.w	#7,d0
000019e0 103b005a	move.b	PCycLZ_Seq(pc,d0.w),d0
000019e4 6754	beq.s	PCycLZ_Skip2
000019e6 7201	moveq	#1,d1
000019e8 4a38f7c0	tst.b	(f_conveyrev).w
000019ec 6702	beq.s	PCycLZ_NoRev
000019ee 4441	neg.w	d1
000019f0 3038f650	move.w	(v_pal_buffer).w,d0
000019f4 02400003	andi.w	#3,d0
000019f8 d041	add.w	d1,d0
000019fa 0c400003	cmpi.w	#3,d0
000019fe 650a	blo.s	loc_1A0A
00001a00 3200	move.w	d0,d1
00001a02 7000	moveq	#0,d0
00001a04 4a41	tst.w	d1
00001a06 6a02	bpl.s	loc_1A0A
00001a08 7002	moveq	#2,d0
00001a0a 31c0f650	move.w	d0,(v_pal_buffer).w
00001a0e d040	add.w	d0,d0
00001a10 3200	move.w	d0,d1
00001a12 d040	add.w	d0,d0
00001a14 d041	add.w	d1,d0
00001a16 41f900001bc6	lea	(Pal_LZCyc2).l,a0
00001a1c 43f8fb76	lea	(v_palette+$76).w,a1
00001a20 22f00000	move.l	(a0,d0.w),(a1)+
00001a24 32b00004	move.w	4(a0,d0.w),(a1)
00001a28 41f900001bd8	lea	(Pal_LZCyc3).l,a0
00001a2e 43f8faf6	lea	(v_palette_water+$76).w,a1
00001a32 22f00000	move.l	(a0,d0.w),(a1)+
00001a36 32b00004	move.w	4(a0,d0.w),(a1)
00001a3a 4e75	rts	
00001a44 4e75	rts	
00001a46 5378f634	subq.w	#1,(v_pcyc_time).w
00001a4a 6a34	bpl.s	locret_1A80
00001a4c 31fc0007f634	move.w	#7,(v_pcyc_time).w
00001a52 3038f632	move.w	(v_pcyc_num).w,d0
00001a56 5240	addq.w	#1,d0
00001a58 0c400006	cmpi.w	#6,d0
00001a5c 6502	blo.s	loc_1A60
00001a5e 7000	moveq	#0,d0
00001a60 31c0f632	move.w	d0,(v_pcyc_num).w
00001a64 3200	move.w	d0,d1
00001a66 d241	add.w	d1,d1
00001a68 d041	add.w	d1,d0
00001a6a d040	add.w	d0,d0
00001a6c 41f900001c52	lea	(Pal_SLZCyc).l,a0
00001a72 43f8fb56	lea	(v_palette+$56).w,a1
00001a76 32b00000	move.w	(a0,d0.w),(a1)
00001a7a 237000020004	move.l	2(a0,d0.w),4(a1)
00001a80 4e75	rts	
00001a82 5378f634	subq.w	#1,(v_pcyc_time).w
00001a86 6a3e	bpl.s	locret_1AC6
00001a88 31fc0005f634	move.w	#5,(v_pcyc_time).w
00001a8e 3038f632	move.w	(v_pcyc_num).w,d0
00001a92 5278f632	addq.w	#1,(v_pcyc_num).w
00001a96 02400003	andi.w	#3,d0
00001a9a e548	lsl.w	#2,d0
00001a9c 3200	move.w	d0,d1
00001a9e d040	add.w	d0,d0
00001aa0 41f900001c76	lea	(Pal_SYZCyc1).l,a0
00001aa6 43f8fb6e	lea	(v_palette+$6E).w,a1
00001aaa 22f00000	move.l	(a0,d0.w),(a1)+
00001aae 22b00004	move.l	4(a0,d0.w),(a1)
00001ab2 41f900001c96	lea	(Pal_SYZCyc2).l,a0
00001ab8 43f8fb76	lea	(v_palette+$76).w,a1
00001abc 32b01000	move.w	(a0,d1.w),(a1)
00001ac0 337010020004	move.w	2(a0,d1.w),4(a1)
00001ac6 4e75	rts	
00001ac8 45f900001ca6	lea	(Pal_SBZCycList1).l,a2
00001ace 4a38fe11	tst.b	(v_act).w
00001ad2 6706	beq.s	loc_1ADA
00001ad4 45f900001cde	lea	(Pal_SBZCycList2).l,a2
00001ada 43f8f650	lea	(v_pal_buffer).w,a1
00001ade 321a	move.w	(a2)+,d1
00001ae0 5311	subq.b	#1,(a1)
00001ae2 6b06	bmi.s	loc_1AEA
00001ae4 5489	addq.l	#2,a1
00001ae6 5c8a	addq.l	#6,a2
00001ae8 601c	bra.s	loc_1B06
00001aea 12da	move.b	(a2)+,(a1)+
00001aec 1011	move.b	(a1),d0
00001aee 5200	addq.b	#1,d0
00001af0 b01a	cmp.b	(a2)+,d0
00001af2 6502	blo.s	loc_1AF6
00001af4 7000	moveq	#0,d0
00001af6 12c0	move.b	d0,(a1)+
00001af8 0240000f	andi.w	#$F,d0
00001afc d040	add.w	d0,d0
00001afe 305a	movea.w	(a2)+,a0
00001b00 365a	movea.w	(a2)+,a3
00001b02 36b00000	move.w	(a0,d0.w),(a3)
00001b06 51c9ffd8	dbf	d1,loc_1AE0
00001b0a 5378f634	subq.w	#1,(v_pcyc_time).w
00001b0e 6a54	bpl.s	locret_1B64
00001b10 41f900001d3a	lea	(Pal_SBZCyc4).l,a0
00001b16 31fc0001f634	move.w	#1,(v_pcyc_time).w
00001b1c 4a38fe11	tst.b	(v_act).w
00001b20 670c	beq.s	loc_1B2E
00001b22 41f900001da0	lea	(Pal_SBZCyc10).l,a0
00001b28 31fc0000f634	move.w	#0,(v_pcyc_time).w
00001b2e 72ff	moveq	#-1,d1
00001b30 4a38f7c0	tst.b	(f_conveyrev).w
00001b34 6702	beq.s	loc_1B38
00001b36 4441	neg.w	d1
00001b38 3038f632	move.w	(v_pcyc_num).w,d0
00001b3c 02400003	andi.w	#3,d0
00001b40 d041	add.w	d1,d0
00001b42 0c400003	cmpi.w	#3,d0
00001b46 650a	blo.s	loc_1B52
00001b48 3200	move.w	d0,d1
00001b4a 7000	moveq	#0,d0
00001b4c 4a41	tst.w	d1
00001b4e 6a02	bpl.s	loc_1B52
00001b50 7002	moveq	#2,d0
00001b52 31c0f632	move.w	d0,(v_pcyc_num).w
00001b56 d040	add.w	d0,d0
00001b58 43f8fb58	lea	(v_palette+$58).w,a1
00001b5c 22f00000	move.l	(a0,d0.w),(a1)+
00001b60 32b00004	move.w	4(a0,d0.w),(a1)
00001b64 4e75	rts	
00001dac 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00001db2 7000	moveq	#0,d0
00001db4 41f8fb00	lea	(v_palette).w,a0
00001db8 1038f626	move.b	(v_pfade_start).w,d0
00001dbc d0c0	adda.w	d0,a0
00001dbe 7200	moveq	#cBlack,d1
00001dc0 1038f627	move.b	(v_pfade_size).w,d0
00001dc4 30c1	move.w	d1,(a0)+
00001dc6 51c8fffc	dbf	d0,.fill
00001dca 383c0015	move.w	#$16-1,d4
00001dce 11fc0012f62a	move.b	#id_VBlank_PaletteFade,(v_vblank_routine).w
00001dd4 61000bd2	bsr.w	WaitForVBlank
00001dd8 610a	bsr.s	FadeIn_FromBlack
00001dda 6100f810	bsr.w	RunPLC
00001dde 51ccffee	dbf	d4,.mainloop
00001de2 4e75	rts	
00001de4 7000	moveq	#0,d0
00001de6 41f8fb00	lea	(v_palette).w,a0
00001dea 43f8fb80	lea	(v_palette_fading).w,a1
00001dee 1038f626	move.b	(v_pfade_start).w,d0
00001df2 d0c0	adda.w	d0,a0
00001df4 d2c0	adda.w	d0,a1
00001df6 1038f627	move.b	(v_pfade_size).w,d0
00001dfa 612a	bsr.s	FadeIn_AddColour
00001dfc 51c8fffc	dbf	d0,.addcolour
00001e00 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00001e06 661c	bne.s	.exit
00001e08 7000	moveq	#0,d0
00001e0a 41f8fa80	lea	(v_palette_water).w,a0
00001e0e 43f8fa00	lea	(v_palette_water_fading).w,a1
00001e12 1038f626	move.b	(v_pfade_start).w,d0
00001e16 d0c0	adda.w	d0,a0
00001e18 d2c0	adda.w	d0,a1
00001e1a 1038f627	move.b	(v_pfade_size).w,d0
00001e1e 6106	bsr.s	FadeIn_AddColour
00001e20 51c8fffc	dbf	d0,.addcolour2
00001e24 4e75	rts	
00001e26 3419	move.w	(a1)+,d2
00001e28 3610	move.w	(a0),d3
00001e2a b642	cmp.w	d2,d3
00001e2c 6720	beq.s	.next
00001e2e 3203	move.w	d3,d1
00001e30 06410200	addi.w	#$200,d1
00001e34 b242	cmp.w	d2,d1
00001e36 6204	bhi.s	.addgreen
00001e38 30c1	move.w	d1,(a0)+
00001e3a 4e75	rts	
00001e3c 3203	move.w	d3,d1
00001e3e 06410020	addi.w	#$20,d1
00001e42 b242	cmp.w	d2,d1
00001e44 6204	bhi.s	.addred
00001e46 30c1	move.w	d1,(a0)+
00001e48 4e75	rts	
00001e4a 5458	addq.w	#2,(a0)+
00001e4c 4e75	rts	
00001e4e 5448	addq.w	#2,a0
00001e50 4e75	rts	
00001e52 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00001e58 383c0015	move.w	#$16-1,d4
00001e5c 11fc0012f62a	move.b	#id_VBlank_PaletteFade,(v_vblank_routine).w
00001e62 61000b44	bsr.w	WaitForVBlank
00001e66 610a	bsr.s	FadeOut_ToBlack
00001e68 6100f782	bsr.w	RunPLC
00001e6c 51ccffee	dbf	d4,.mainloop
00001e70 4e75	rts	
00001e72 7000	moveq	#0,d0
00001e74 41f8fb00	lea	(v_palette).w,a0
00001e78 1038f626	move.b	(v_pfade_start).w,d0
00001e7c d0c0	adda.w	d0,a0
00001e7e 1038f627	move.b	(v_pfade_size).w,d0
00001e82 611c	bsr.s	FadeOut_DecColour
00001e84 51c8fffc	dbf	d0,.decolour
00001e88 7000	moveq	#0,d0
00001e8a 41f8fa80	lea	(v_palette_water).w,a0
00001e8e 1038f626	move.b	(v_pfade_start).w,d0
00001e92 d0c0	adda.w	d0,a0
00001e94 1038f627	move.b	(v_pfade_size).w,d0
00001e98 6106	bsr.s	FadeOut_DecColour
00001e9a 51c8fffc	dbf	d0,.decolour2
00001e9e 4e75	rts	
00001ea0 3410	move.w	(a0),d2
00001ea2 6728	beq.s	.next
00001ea4 3202	move.w	d2,d1
00001ea6 0241000e	andi.w	#$E,d1
00001eaa 6704	beq.s	.degreen
00001eac 5558	subq.w	#2,(a0)+
00001eae 4e75	rts	
00001eb0 3202	move.w	d2,d1
00001eb2 024100e0	andi.w	#$E0,d1
00001eb6 6706	beq.s	.deblue
00001eb8 04580020	subi.w	#$20,(a0)+
00001ebc 4e75	rts	
00001ebe 3202	move.w	d2,d1
00001ec0 02410e00	andi.w	#$E00,d1
00001ec4 6706	beq.s	.next
00001ec6 04580200	subi.w	#$200,(a0)+
00001eca 4e75	rts	
00001ecc 5448	addq.w	#2,a0
00001ece 4e75	rts	
00001ed0 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00001ed6 7000	moveq	#0,d0
00001ed8 41f8fb00	lea	(v_palette).w,a0
00001edc 1038f626	move.b	(v_pfade_start).w,d0
00001ee0 d0c0	adda.w	d0,a0
00001ee2 323c0eee	move.w	#cWhite,d1
00001ee6 1038f627	move.b	(v_pfade_size).w,d0
00001eea 30c1	move.w	d1,(a0)+
00001eec 51c8fffc	dbf	d0,.fill
00001ef0 383c0015	move.w	#$16-1,d4
00001ef4 11fc0012f62a	move.b	#id_VBlank_PaletteFade,(v_vblank_routine).w
00001efa 61000aac	bsr.w	WaitForVBlank
00001efe 610a	bsr.s	WhiteIn_FromWhite
00001f00 6100f6ea	bsr.w	RunPLC
00001f04 51ccffee	dbf	d4,.mainloop
00001f08 4e75	rts	
00001f0a 7000	moveq	#0,d0
00001f0c 41f8fb00	lea	(v_palette).w,a0
00001f10 43f8fb80	lea	(v_palette_fading).w,a1
00001f14 1038f626	move.b	(v_pfade_start).w,d0
00001f18 d0c0	adda.w	d0,a0
00001f1a d2c0	adda.w	d0,a1
00001f1c 1038f627	move.b	(v_pfade_size).w,d0
00001f20 612a	bsr.s	WhiteIn_DecColour
00001f22 51c8fffc	dbf	d0,.decolour
00001f26 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00001f2c 661c	bne.s	.exit
00001f2e 7000	moveq	#0,d0
00001f30 41f8fa80	lea	(v_palette_water).w,a0
00001f34 43f8fa00	lea	(v_palette_water_fading).w,a1
00001f38 1038f626	move.b	(v_pfade_start).w,d0
00001f3c d0c0	adda.w	d0,a0
00001f3e d2c0	adda.w	d0,a1
00001f40 1038f627	move.b	(v_pfade_size).w,d0
00001f44 6106	bsr.s	WhiteIn_DecColour
00001f46 51c8fffc	dbf	d0,.decolour2
00001f4a 4e75	rts	
00001f4c 3419	move.w	(a1)+,d2
00001f4e 3610	move.w	(a0),d3
00001f50 b642	cmp.w	d2,d3
00001f52 6724	beq.s	.next
00001f54 3203	move.w	d3,d1
00001f56 04410200	subi.w	#$200,d1
00001f5a 6508	blo.s	.degreen
00001f5c b242	cmp.w	d2,d1
00001f5e 6504	blo.s	.degreen
00001f60 30c1	move.w	d1,(a0)+
00001f62 4e75	rts	
00001f64 3203	move.w	d3,d1
00001f66 04410020	subi.w	#$20,d1
00001f6a 6508	blo.s	.dered
00001f6c b242	cmp.w	d2,d1
00001f6e 6504	blo.s	.dered
00001f70 30c1	move.w	d1,(a0)+
00001f72 4e75	rts	
00001f74 5558	subq.w	#2,(a0)+
00001f76 4e75	rts	
00001f78 5448	addq.w	#2,a0
00001f7a 4e75	rts	
00001f7c 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00001f82 383c0015	move.w	#$16-1,d4
00001f86 11fc0012f62a	move.b	#id_VBlank_PaletteFade,(v_vblank_routine).w
00001f8c 61000a1a	bsr.w	WaitForVBlank
00001f90 610a	bsr.s	WhiteOut_ToWhite
00001f92 6100f658	bsr.w	RunPLC
00001f96 51ccffee	dbf	d4,.mainloop
00001f9a 4e75	rts	
00001f9c 7000	moveq	#0,d0
00001f9e 41f8fb00	lea	(v_palette).w,a0
00001fa2 1038f626	move.b	(v_pfade_start).w,d0
00001fa6 d0c0	adda.w	d0,a0
00001fa8 1038f627	move.b	(v_pfade_size).w,d0
00001fac 611c	bsr.s	WhiteOut_AddColour
00001fae 51c8fffc	dbf	d0,.addcolour
00001fb2 7000	moveq	#0,d0
00001fb4 41f8fa80	lea	(v_palette_water).w,a0
00001fb8 1038f626	move.b	(v_pfade_start).w,d0
00001fbc d0c0	adda.w	d0,a0
00001fbe 1038f627	move.b	(v_pfade_size).w,d0
00001fc2 6106	bsr.s	WhiteOut_AddColour
00001fc4 51c8fffc	dbf	d0,.addcolour2
00001fc8 4e75	rts	
00001fca 3410	move.w	(a0),d2
00001fcc 0c420eee	cmpi.w	#cWhite,d2
00001fd0 6734	beq.s	.next
00001fd2 3202	move.w	d2,d1
00001fd4 0241000e	andi.w	#$E,d1
00001fd8 0c41000e	cmpi.w	#cRed,d1
00001fdc 6704	beq.s	.addgreen
00001fde 5458	addq.w	#2,(a0)+
00001fe0 4e75	rts	
00001fe2 3202	move.w	d2,d1
00001fe4 024100e0	andi.w	#$E0,d1
00001fe8 0c4100e0	cmpi.w	#cGreen,d1
00001fec 6706	beq.s	.addblue
00001fee 06580020	addi.w	#$20,(a0)+
00001ff2 4e75	rts	
00001ff4 3202	move.w	d2,d1
00001ff6 02410e00	andi.w	#$E00,d1
00001ffa 0c410e00	cmpi.w	#cBlue,d1
00001ffe 6706	beq.s	.next
00002000 06580200	addi.w	#$200,(a0)+
00002004 4e75	rts	
00002006 5448	addq.w	#2,a0
00002008 4e75	rts	
0000200a 4a38f635	tst.b	(v_pcyc_time+1).w
0000200e 665a	bne.s	PCycSega_FadeIn
00002010 43f8fb20	lea	(v_palette_line_2).w,a1
00002014 41f9000020c0	lea	(Pal_Sega1).l,a0
0000201a 7205	moveq	#(Pal_Sega1_end-Pal_Sega1)/2-1,d1
0000201c 3038f632	move.w	(v_pcyc_num).w,d0
00002020 6a08	bpl.s	.doLightScan
00002022 5448	addq.w	#2,a0
00002024 5341	subq.w	#1,d1
00002026 5440	addq.w	#2,d0
00002028 60f6	bra.s	.findScanStart
0000202a 3400	move.w	d0,d2
0000202c 0242001e	andi.w	#$1E,d2
00002030 6602	bne.s	.notTransparent1
00002032 5440	addq.w	#2,d0
00002034 0c400060	cmpi.w	#v_palette_line_4-v_palette_line_1,d0
00002038 6404	bhs.s	.writeNoMore
0000203a 33980000	move.w	(a0)+,(a1,d0.w)
0000203e 5440	addq.w	#2,d0
00002040 51c9ffe8	dbf	d1,.doLightScan
00002044 3038f632	move.w	(v_pcyc_num).w,d0
00002048 5440	addq.w	#2,d0
0000204a 3400	move.w	d0,d2
0000204c 0242001e	andi.w	#$1E,d2
00002050 6602	bne.s	.notTransparent2
00002052 5440	addq.w	#2,d0
00002054 0c400064	cmpi.w	#v_palette_line_4-v_palette_line_1+4,d0
00002058 6d08	blt.s	.scanNotDone
0000205a 31fc0401f634	move.w	#(4<<8)+1,(v_pcyc_time).w
00002060 70f4	moveq	#-6*2,d0
00002062 31c0f632	move.w	d0,(v_pcyc_num).w
00002066 7001	moveq	#1,d0
00002068 4e75	rts	
0000206a 5338f634	subq.b	#1,(v_pcyc_time).w
0000206e 6a4c	bpl.s	.delayFadeIn
00002070 11fc0004f634	move.b	#4,(v_pcyc_time).w
00002076 3038f632	move.w	(v_pcyc_num).w,d0
0000207a 0640000c	addi.w	#6*2,d0
0000207e 0c400030	cmpi.w	#(6*2)*4,d0
00002082 6504	blo.s	.doFadeIn
00002084 7000	moveq	#0,d0
00002086 4e75	rts	
00002088 31c0f632	move.w	d0,(v_pcyc_num).w
0000208c 41f9000020cc	lea	(Pal_Sega2).l,a0
00002092 41f00000	lea	(a0,d0.w),a0
00002096 43f8fb04	lea	(v_palette_line_1+$04).w,a1
0000209a 22d8	move.l	(a0)+,(a1)+
0000209c 22d8	move.l	(a0)+,(a1)+
0000209e 3298	move.w	(a0)+,(a1)
000020a0 43f8fb20	lea	(v_palette_line_2).w,a1
000020a4 7000	moveq	#0,d0
000020a6 722c	moveq	#((v_palette_line_4-v_palette_line_1)/2)-3-1,d1
000020a8 3400	move.w	d0,d2
000020aa 0242001e	andi.w	#$1E,d2
000020ae 6602	bne.s	.notTransparent3
000020b0 5440	addq.w	#2,d0
000020b2 33900000	move.w	(a0),(a1,d0.w)
000020b6 5440	addq.w	#2,d0
000020b8 51c9ffee	dbf	d1,.fillRest
000020bc 7001	moveq	#1,d0
000020be 4e75	rts	
000020fc 43f900002168	lea	(Pal_Index).l,a1
00002102 e748	lsl.w	#3,d0
00002104 d2c0	adda.w	d0,a1
00002106 2459	movea.l	(a1)+,a2
00002108 3659	movea.w	(a1)+,a3
0000210a d6fc0080	adda.w	#v_palette_fading-v_palette,a3
0000210e 3e19	move.w	(a1)+,d7
00002110 26da	move.l	(a2)+,(a3)+
00002112 51cffffc	dbf	d7,.loop
00002116 4e75	rts	
00002118 43f900002168	lea	(Pal_Index).l,a1
0000211e e748	lsl.w	#3,d0
00002120 d2c0	adda.w	d0,a1
00002122 2459	movea.l	(a1)+,a2
00002124 3659	movea.w	(a1)+,a3
00002126 3e19	move.w	(a1)+,d7
00002128 26da	move.l	(a2)+,(a3)+
0000212a 51cffffc	dbf	d7,.loop
0000212e 4e75	rts	
00002130 43f900002168	lea	(Pal_Index).l,a1
00002136 e748	lsl.w	#3,d0
00002138 d2c0	adda.w	d0,a1
0000213a 2459	movea.l	(a1)+,a2
0000213c 3659	movea.w	(a1)+,a3
0000213e 96fc0080	suba.w	#v_palette-v_palette_water,a3
00002142 3e19	move.w	(a1)+,d7
00002144 26da	move.l	(a2)+,(a3)+
00002146 51cffffc	dbf	d7,.loop
0000214a 4e75	rts	
0000214c 43f900002168	lea	(Pal_Index).l,a1
00002152 e748	lsl.w	#3,d0
00002154 d2c0	adda.w	d0,a1
00002156 2459	movea.l	(a1)+,a2
00002158 3659	movea.w	(a1)+,a3
0000215a 96fc0100	suba.w	#v_palette-v_palette_water_fading,a3
0000215e 3e19	move.w	(a1)+,d7
00002160 26da	move.l	(a2)+,(a3)+
00002162 51cffffc	dbf	d7,.loop
00002166 4e75	rts	
000029a8 46fc2300	move.w	#$2300,sr
000029ac 4a38f62a	tst.b	(v_vblank_routine).w
000029b0 66fa	bne.s	.wait
000029b2 4e75	rts	
000029b4 2238f636	move.l	(v_random).w,d1
000029b8 6606	bne.s	.scramble
000029ba 223c2a6d365a	move.l	#$2A6D365A,d1
000029c0 2001	move.l	d1,d0
000029c2 e581	asl.l	#2,d1
000029c4 d280	add.l	d0,d1
000029c6 e781	asl.l	#3,d1
000029c8 d280	add.l	d0,d1
000029ca 3001	move.w	d1,d0
000029cc 4841	swap	d1
000029ce d041	add.w	d1,d0
000029d0 3200	move.w	d0,d1
000029d2 4841	swap	d1
000029d4 21c1f636	move.l	d1,(v_random).w
000029d8 4e75	rts	
000029da 024000ff	andi.w	#$FF,d0
000029de d040	add.w	d0,d0
000029e0 06400080	addi.w	#$80,d0
000029e4 323b000c	move.w	Sine_Data(pc,d0.w),d1
000029e8 04400080	subi.w	#$80,d0
000029ec 303b0004	move.w	Sine_Data(pc,d0.w),d0
000029f0 4e75	rts	
00002c72 48e76000	movem.l	d1-d2,-(sp)
00002c76 3200	move.w	d0,d1
00002c78 4841	swap	d1
00002c7a 7000	moveq	#0,d0
00002c7c 3200	move.w	d0,d1
00002c7e 7407	moveq	#7,d2
00002c80 e599	rol.l	#2,d1
00002c82 d040	add.w	d0,d0
00002c84 5240	addq.w	#1,d0
00002c86 9240	sub.w	d0,d1
00002c88 6410	bcc.s	loc_2C9A
00002c8a d240	add.w	d0,d1
00002c8c 5340	subq.w	#1,d0
00002c8e 51cafff0	dbf	d2,loc_2C80
00002c92 e248	lsr.w	#1,d0
00002c94 4cdf0006	movem.l	(sp)+,d1-d2
00002c98 4e75	rts	
00002c9a 5240	addq.w	#1,d0
00002c9c 51caffe2	dbf	d2,loc_2C80
00002ca0 e248	lsr.w	#1,d0
00002ca2 4cdf0006	movem.l	(sp)+,d1-d2
00002ca6 4e75	rts	
00002ca8 48e71800	movem.l	d3-d4,-(sp)
00002cac 7600	moveq	#0,d3
00002cae 7800	moveq	#0,d4
00002cb0 3601	move.w	d1,d3
00002cb2 3802	move.w	d2,d4
00002cb4 8843	or.w	d3,d4
00002cb6 674c	beq.s	CA_NullAngle
00002cb8 3802	move.w	d2,d4
00002cba 4a43	tst.w	d3
00002cbc 6a000004	bpl.w	.posX
00002cc0 4443	neg.w	d3
00002cc2 4a44	tst.w	d4
00002cc4 6a000004	bpl.w	.posY
00002cc8 4444	neg.w	d4
00002cca b843	cmp.w	d3,d4
00002ccc 6400000e	bhs.w	.yIsBigger
00002cd0 e18c	lsl.l	#8,d4
00002cd2 88c3	divu.w	d3,d4
00002cd4 7000	moveq	#0,d0
00002cd6 103b4036	move.b	Angle_Data(pc,d4.w),d0
00002cda 600a	bra.s	.checkXFlip
00002cdc e18b	lsl.l	#8,d3
00002cde 86c4	divu.w	d4,d3
00002ce0 7040	moveq	#$40,d0
00002ce2 903b302a	sub.b	Angle_Data(pc,d3.w),d0
00002ce6 4a41	tst.w	d1
00002ce8 6a000008	bpl.w	.chkYFlip
00002cec 4440	neg.w	d0
00002cee 06400080	addi.w	#$40*2,d0
00002cf2 4a42	tst.w	d2
00002cf4 6a000008	bpl.w	.return
00002cf8 4440	neg.w	d0
00002cfa 06400100	addi.w	#$40*4,d0
00002cfe 4cdf0018	movem.l	(sp)+,d3-d4
00002d02 4e75	rts	
00002d04 303c0040	move.w	#$40,d0
00002d08 4cdf0018	movem.l	(sp)+,d3-d4
00002d0c 4e75	rts	
00002e10 103c00e4	move.b	#bgm_Stop,d0
00002e14 6100e586	bsr.w	QueueSound2
00002e18 6100e7c4	bsr.w	ClearPLC
00002e1c 6100f034	bsr.w	PaletteFadeOut
00002e20 4df900c00004	lea	(vdp_control_port).l,a6
00002e26 3cbc8004	move.w	#$8004,(a6)
00002e2a 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
00002e2e 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
00002e32 3cbc8700	move.w	#$8700,(a6)
00002e36 3cbc8b00	move.w	#$8B00,(a6)
00002e3a 4238f64e	clr.b	(f_wtr_state).w
00002e3e 46fc2700	move.w	#$2700,sr
00002e42 3038f60c	move.w	(v_vdp_buffer1).w,d0
00002e46 020000bf	andi.b	#%10111111,d0
00002e4a 33c000c00004	move.w	d0,(vdp_control_port).l
00002e50 6100e472	bsr.w	ClearScreen
00002e54 23fc4000000000c00004	move.l	#($40000000+(((ArtTile_Sega_Tiles*tile_size)&$3FFF)<<16)+(((ArtTile_Sega_Tiles*tile_size)&$C000)>>14)),(vdp_control_port).l
00002e5e 41f90001dc00	lea	(Nem_SegaLogo).l,a0
00002e64 6100e5da	bsr.w	NemDec
00002e68 43f900ff0000	lea	(v_ram_start).l,a1
00002e6e 41f90001e062	lea	(Eni_SegaLogo).l,a0
00002e74 303c0000	move.w	#ArtTile_Sega_Tiles,d0
00002e78 6100e8a4	bsr.w	EniDec
00002e7c 43f900ff0000	lea	(v_ram_start).l,a1
00002e82 203c65100003	move.l	#($40000000+(((vram_bg+$510)&$3FFF)<<16)+(((vram_bg+$510)&$C000)>>14)),d0
00002e88 7217	moveq	#(24)-1,d1
00002e8a 7407	moveq	#(8)-1,d2
00002e8c 6100e592	bsr.w	TilemapToVRAM
00002e90 43f900ff0180	lea	(v_ram_start+24*8*2).l,a1
00002e96 203c40000003	move.l	#($40000000+(((vram_fg)&$3FFF)<<16)+(((vram_fg)&$C000)>>14)),d0
00002e9c 7227	moveq	#(40)-1,d1
00002e9e 741b	moveq	#(28)-1,d2
00002ea0 6100e57e	bsr.w	TilemapToVRAM
00002ea4 7000	moveq	#palid_SegaBG,d0
00002ea6 6100f270	bsr.w	PalLoad
00002eaa 31fcfff6f632	move.w	#-$A,(v_pcyc_num).w
00002eb0 31fc0000f634	move.w	#0,(v_pcyc_time).w
00002eb6 31fc0000f662	move.w	#0,(v_pal_buffer+$12).w
00002ebc 31fc0000f660	move.w	#0,(v_pal_buffer+$10).w
00002ec2 3038f60c	move.w	(v_vdp_buffer1).w,d0
00002ec6 00000040	ori.b	#%01000000,d0
00002eca 33c000c00004	move.w	d0,(vdp_control_port).l
00002ed0 11fc0002f62a	move.b	#id_VBlank_Sega,(v_vblank_routine).w
00002ed6 6100fad0	bsr.w	WaitForVBlank
00002eda 6100f12e	bsr.w	PalCycle_Sega
00002ede 66f0	bne.s	Sega_WaitPal
00002ee0 103c00e1	move.b	#sfx_Sega,d0
00002ee4 6100e4b6	bsr.w	QueueSound2
00002ee8 11fc0014f62a	move.b	#id_VBlank_SegaPCM,(v_vblank_routine).w
00002eee 6100fab8	bsr.w	WaitForVBlank
00002ef2 31fc001ef614	move.w	#30,(v_generictimer).w
00002ef8 11fc0002f62a	move.b	#id_VBlank_Sega,(v_vblank_routine).w
00002efe 6100faa8	bsr.w	WaitForVBlank
00002f02 4a78f614	tst.w	(v_generictimer).w
00002f06 6708	beq.s	Sega_GotoTitle
00002f08 02380080f605	andi.b	#btnStart,(v_jpadpress1).w
00002f0e 67e8	beq.s	Sega_WaitEnd
00002f10 11fc0004f600	move.b	#id_Title,(v_gamemode).w
00002f16 4e75	rts	
00002f18 103c00e4	move.b	#bgm_Stop,d0
00002f1c 6100e47e	bsr.w	QueueSound2
00002f20 6100e6bc	bsr.w	ClearPLC
00002f24 6100ef2c	bsr.w	PaletteFadeOut
00002f28 46fc2700	move.w	#$2700,sr
00002f2c 6100e424	bsr.w	DACDriverLoad
00002f30 4df900c00004	lea	(vdp_control_port).l,a6
00002f36 3cbc8004	move.w	#$8004,(a6)
00002f3a 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
00002f3e 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
00002f42 3cbc9001	move.w	#$9001,(a6)
00002f46 3cbc9200	move.w	#$9200,(a6)
00002f4a 3cbc8b03	move.w	#$8B03,(a6)
00002f4e 3cbc8720	move.w	#$8720,(a6)
00002f52 4238f64e	clr.b	(f_wtr_state).w
00002f56 6100e36c	bsr.w	ClearScreen
00002f5a 43f8d000	lea	(v_objspace).w,a1
00002f5e 7000	moveq	#0,d0
00002f60 323c07ff	move.w	#.length/4-1,d1
00002f64 22c0	move.l	d0,(a1)+
00002f66 51c9fffc	dbf	d1,.loop
00002f6a 23fc4000000000c00004	move.l	#($40000000+(((ArtTile_Title_Japanese_Text*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Japanese_Text*tile_size)&$C000)>>14)),(vdp_control_port).l
00002f74 41f900020d3a	lea	(Nem_JapNames).l,a0
00002f7a 6100e4c4	bsr.w	NemDec
00002f7e 23fc54c0000000c00004	move.l	#($40000000+(((ArtTile_Sonic_Team_Font*tile_size)&$3FFF)<<16)+(((ArtTile_Sonic_Team_Font*tile_size)&$C000)>>14)),(vdp_control_port).l
00002f88 41f900061f76	lea	(Nem_CreditText).l,a0
00002f8e 6100e4b0	bsr.w	NemDec
00002f92 43f900ff0000	lea	(v_ram_start).l,a1
00002f98 41f900020c7c	lea	(Eni_JapNames).l,a0
00002f9e 303c0000	move.w	#ArtTile_Title_Japanese_Text,d0
00002fa2 6100e77a	bsr.w	EniDec
00002fa6 43f900ff0000	lea	(v_ram_start).l,a1
00002fac 203c40000003	move.l	#($40000000+(((vram_fg)&$3FFF)<<16)+(((vram_fg)&$C000)>>14)),d0
00002fb2 7227	moveq	#(40)-1,d1
00002fb4 741b	moveq	#(28)-1,d2
00002fb6 6100e468	bsr.w	TilemapToVRAM
00002fba 43f8fb80	lea	(v_palette_fading).w,a1
00002fbe 7000	moveq	#0,d0
00002fc0 323c001f	move.w	#.length/4-1,d1
00002fc4 22c0	move.l	d0,(a1)+
00002fc6 51c9fffc	dbf	d1,.loop
00002fca 7003	moveq	#palid_Sonic,d0
00002fcc 6100f12e	bsr.w	PalLoad_Fade
00002fd0 11fc008ad080	move.b	#id_CreditsText,(v_sonicteam).w
00002fd6 4eb90000d338	jsr	(ExecuteObjects).l
00002fdc 4eb90000d65e	jsr	(BuildSprites).l
00002fe2 6100edc8	bsr.w	PaletteFadeIn
00002fe6 46fc2700	move.w	#$2700,sr
00002fea 23fc4000000100c00004	move.l	#($40000000+(((ArtTile_Title_Foreground*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Foreground*tile_size)&$C000)>>14)),(vdp_control_port).l
00002ff4 41f90001e26e	lea	(Nem_TitleFg).l,a0
00002ffa 6100e444	bsr.w	NemDec
00002ffe 23fc6000000100c00004	move.l	#($40000000+(((ArtTile_Title_Sonic*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Sonic*tile_size)&$C000)>>14)),(vdp_control_port).l
00003008 41f90001f27a	lea	(Nem_TitleSonic).l,a0
0000300e 6100e430	bsr.w	NemDec
00003012 23fc6200000200c00004	move.l	#($40000000+(((ArtTile_Title_Trademark*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Trademark*tile_size)&$C000)>>14)),(vdp_control_port).l
0000301c 41f900020c48	lea	(Nem_TitleTM).l,a0
00003022 6100e41c	bsr.w	NemDec
00003026 4df900c00000	lea	(vdp_data_port).l,a6
0000302c 2d7c500000030004	move.l	#($40000000+(((ArtTile_Level_Select_Font*tile_size)&$3FFF)<<16)+(((ArtTile_Level_Select_Font*tile_size)&$C000)>>14)),4(a6)
00003034 4bf9000005f0	lea	(Art_Text).l,a5
0000303a 323c028f	move.w	#(Art_Text_end-Art_Text)/2-1,d1
0000303e 3c9d	move.w	(a5)+,(a6)
00003040 51c9fffc	dbf	d1,Tit_LoadText
00003044 11fc0000fe30	move.b	#0,(v_lastlamp).w
0000304a 31fc0000fe08	move.w	#0,(v_debuguse).w
00003050 31fc0000fff0	move.w	#0,(f_demo).w
00003056 31fc0000ffea	move.w	#0,(v_unused2).w
0000305c 31fc0000fe10	move.w	#id_GHZ_act1,(v_zone).w
00003062 31fc0000f634	move.w	#0,(v_pcyc_time).w
00003068 61002e54	bsr.w	LevelSizeLoad
0000306c 61003218	bsr.w	DeformLayers
00003070 43f8b000	lea	(v_16x16).w,a1
00003074 41f90003bcf2	lea	(Blk16_GHZ).l,a0
0000307a 303c0000	move.w	#ArtTile_Level,d0
0000307e 6100e69e	bsr.w	EniDec
00003082 41f90003f09a	lea	(Blk256_GHZ).l,a0
00003088 43f900ff0000	lea	(v_256x256).l,a1
0000308e 6100e80c	bsr.w	KosDec
00003092 61003c7e	bsr.w	LevelLayoutLoad
00003096 6100edba	bsr.w	PaletteFadeOut
0000309a 46fc2700	move.w	#$2700,sr
0000309e 6100e224	bsr.w	ClearScreen
000030a2 4bf900c00004	lea	(vdp_control_port).l,a5
000030a8 4df900c00000	lea	(vdp_data_port).l,a6
000030ae 47f8f708	lea	(v_bgscreenposx).w,a3
000030b2 49f8a440	lea	(v_lvllayout_bg).w,a4
000030b6 343c6000	move.w	#$4000+(vram_bg-vram_fg),d2
000030ba 61003bc2	bsr.w	DrawChunks
000030be 43f900ff0000	lea	(v_ram_start).l,a1
000030c4 41f90001e15a	lea	(Eni_Title).l,a0
000030ca 303c0000	move.w	#ArtTile_Level,d0
000030ce 6100e64e	bsr.w	EniDec
000030d2 43f900ff0000	lea	(v_ram_start).l,a1
000030d8 203c42060003	move.l	#($40000000+(((vram_fg+$206)&$3FFF)<<16)+(((vram_fg+$206)&$C000)>>14)),d0
000030de 7221	moveq	#(34)-1,d1
000030e0 7415	moveq	#(22)-1,d2
000030e2 6100e33c	bsr.w	TilemapToVRAM
000030e6 23fc4000000000c00004	move.l	#($40000000+(((ArtTile_Level*tile_size)&$3FFF)<<16)+(((ArtTile_Level*tile_size)&$C000)>>14)),(vdp_control_port).l
000030f0 41f90003c692	lea	(Nem_GHZ_1st).l,a0
000030f6 6100e348	bsr.w	NemDec
000030fa 7001	moveq	#palid_Title,d0
000030fc 6100effe	bsr.w	PalLoad_Fade
00003100 103c008a	move.b	#bgm_Title,d0
00003104 6100e296	bsr.w	QueueSound2
00003108 11fc0000fffa	move.b	#0,(f_debugmode).w
0000310e 31fc0178f614	move.w	#376,(v_generictimer).w
00003114 43f8d080	lea	(v_sonicteam).w,a1
00003118 7000	moveq	#0,d0
0000311a 323c0007	move.w	#.length/4-1,d1
0000311e 22c0	move.l	d0,(a1)+
00003120 51c9fffc	dbf	d1,.loop
00003124 11fc000ed040	move.b	#id_TitleSonic,(v_titlesonic).w
0000312a 11fc000fd080	move.b	#id_PSBTM,(v_pressstart).w
00003130 11fc000fd0c0	move.b	#id_PSBTM,(v_titletm).w
00003136 11fc0003d0da	move.b	#3,(v_titletm+obFrame).w
0000313c 11fc000fd100	move.b	#id_PSBTM,(v_ttlsonichide).w
00003142 11fc0002d11a	move.b	#2,(v_ttlsonichide+obFrame).w
00003148 4eb90000d338	jsr	(ExecuteObjects).l
0000314e 61003136	bsr.w	DeformLayers
00003152 4eb90000d65e	jsr	(BuildSprites).l
00003158 7000	moveq	#plcid_Main,d0
0000315a 6100e456	bsr.w	NewPLC
0000315e 31fc0000ffe4	move.w	#0,(v_title_dcount).w
00003164 31fc0000ffe6	move.w	#0,(v_title_ccount).w
0000316a 3038f60c	move.w	(v_vdp_buffer1).w,d0
0000316e 00000040	ori.b	#%01000000,d0
00003172 33c000c00004	move.w	d0,(vdp_control_port).l
00003178 6100ec32	bsr.w	PaletteFadeIn
0000317c 11fc0004f62a	move.b	#id_VBlank_Title,(v_vblank_routine).w
00003182 6100f824	bsr.w	WaitForVBlank
00003186 4eb90000d338	jsr	(ExecuteObjects).l
0000318c 610030f8	bsr.w	DeformLayers
00003190 4eb90000d65e	jsr	(BuildSprites).l
00003196 6100e7c4	bsr.w	PalCycle_Title
0000319a 6100e450	bsr.w	RunPLC
0000319e 3038d008	move.w	(v_player+obX).w,d0
000031a2 5440	addq.w	#2,d0
000031a4 31c0d008	move.w	d0,(v_player+obX).w
000031a8 0c401c00	cmpi.w	#$1C00,d0
000031ac 6508	blo.s	Tit_ChkRegion
000031ae 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
000031b4 4e75	rts	
000031b6 4a38fff8	tst.b	(v_megadrive).w
000031ba 6a08	bpl.s	Tit_RegionJap
000031bc 41f9000033aa	lea	(LevSelCode_US).l,a0
000031c2 6006	bra.s	Tit_EnterCheat
000031c4 41f9000033a4	lea	(LevSelCode_J).l,a0
000031ca 3038ffe4	move.w	(v_title_dcount).w,d0
000031ce d0c0	adda.w	d0,a0
000031d0 1038f605	move.b	(v_jpadpress1).w,d0
000031d4 0200000f	andi.b	#btnDir,d0
000031d8 b010	cmp.b	(a0),d0
000031da 6634	bne.s	Tit_ResetCheat
000031dc 5278ffe4	addq.w	#1,(v_title_dcount).w
000031e0 4a00	tst.b	d0
000031e2 663e	bne.s	Tit_CountC
000031e4 41f8ffe0	lea	(f_levselcheat).w,a0
000031e8 3238ffe6	move.w	(v_title_ccount).w,d1
000031ec e249	lsr.w	#1,d1
000031ee 02410003	andi.w	#3,d1
000031f2 670c	beq.s	Tit_PlayRing
000031f4 4a38fff8	tst.b	(v_megadrive).w
000031f8 6a06	bpl.s	Tit_PlayRing
000031fa 7201	moveq	#1,d1
000031fc 11811001	move.b	d1,1(a0,d1.w)
00003200 11bc00011000	move.b	#1,(a0,d1.w)
00003206 103c00b5	move.b	#sfx_Ring,d0
0000320a 6100e190	bsr.w	QueueSound2
0000320e 6012	bra.s	Tit_CountC
00003210 4a00	tst.b	d0
00003212 670e	beq.s	Tit_CountC
00003214 0c780009ffe4	cmpi.w	#9,(v_title_dcount).w
0000321a 6706	beq.s	Tit_CountC
0000321c 31fc0000ffe4	move.w	#0,(v_title_dcount).w
00003222 1038f605	move.b	(v_jpadpress1).w,d0
00003226 02000020	andi.b	#btnC,d0
0000322a 6704	beq.s	Tit_ChkStartOrDemo
0000322c 5278ffe6	addq.w	#1,(v_title_ccount).w
00003230 4a78f614	tst.w	(v_generictimer).w
00003234 6700017a	beq.w	GotoDemo
00003238 02380080f605	andi.b	#btnStart,(v_jpadpress1).w
0000323e 6700ff3c	beq.w	Tit_MainLoop
00003242 4a38ffe0	tst.b	(f_levselcheat).w
00003246 670000fa	beq.w	PlayLevel
0000324a 08380006f604	btst	#bitA,(v_jpadhold1).w
00003250 670000f0	beq.w	PlayLevel
00003254 7002	moveq	#palid_LevelSel,d0
00003256 6100eec0	bsr.w	PalLoad
0000325a 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
0000325e 7000	moveq	#0,d0
00003260 323c00df	move.w	#.length/4-1,d1
00003264 22c0	move.l	d0,(a1)+
00003266 51c9fffc	dbf	d1,.loop
0000326a 21c0f616	move.l	d0,(v_scrposy_vdp).w
0000326e 46fc2700	move.w	#$2700,sr
00003272 4df900c00000	lea	(vdp_data_port).l,a6
00003278 23fc6000000300c00004	move.l	#($40000000+(((vram_bg)&$3FFF)<<16)+(((vram_bg)&$C000)>>14)),(vdp_control_port).l
00003282 323c03ff	move.w	#plane_size_64x32/4-1,d1
00003286 2c80	move.l	d0,(a6)
00003288 51c9fffc	dbf	d1,.LevSelClearBG
0000328c 61000258	bsr.w	LevSelTextLoad
00003290 11fc0004f62a	move.b	#id_VBlank_Title,(v_vblank_routine).w
00003296 6100f710	bsr.w	WaitForVBlank
0000329a 610001c4	bsr.w	LevSelControls
0000329e 6100e34c	bsr.w	RunPLC
000032a2 4ab8f680	tst.l	(v_plc_buffer).w
000032a6 66e8	bne.s	LevelSelect
000032a8 023800f0f605	andi.b	#btnABC+btnStart,(v_jpadpress1).w
000032ae 67e0	beq.s	LevelSelect
000032b0 3038ff82	move.w	(v_levselitem).w,d0
000032b4 0c400014	cmpi.w	#levsel_sndtest_row,d0
000032b8 6650	bne.s	LevSel_Level_SS
000032ba 3038ff84	move.w	(v_levselsound).w,d0
000032be 06400080	addi.w	#$80,d0
000032c2 4a38ffe3	tst.b	(f_creditscheat).w
000032c6 670c	beq.s	LevSel_NoCheat
000032c8 0c40009f	cmpi.w	#$9F,d0
000032cc 6718	beq.s	LevSel_Ending
000032ce 0c40009e	cmpi.w	#$9E,d0
000032d2 6720	beq.s	LevSel_Credits
000032d4 0c400094	cmpi.w	#bgm__Last+1,d0
000032d8 6506	blo.s	LevSel_PlaySnd
000032da 0c4000a0	cmpi.w	#sfx__First,d0
000032de 65b0	blo.s	LevelSelect
000032e0 6100e0ba	bsr.w	QueueSound2
000032e4 60aa	bra.s	LevelSelect
000032e6 11fc0018f600	move.b	#id_Ending,(v_gamemode).w
000032ec 31fc0600fe10	move.w	#id_EndZ_good,(v_zone).w
000032f2 4e75	rts	
000032f4 11fc001cf600	move.b	#id_Credits,(v_gamemode).w
000032fa 103c0091	move.b	#bgm_Credits,d0
000032fe 6100e09c	bsr.w	QueueSound2
00003302 31fc0000fff4	move.w	#0,(v_creditsnum).w
00003308 4e75	rts	
0000330a d040	add.w	d0,d0
0000330c 303b006c	move.w	LevSel_Ptrs(pc,d0.w),d0
00003310 6b00ff7e	bmi.w	LevelSelect
00003314 0c400700	cmpi.w	#id_SS<<8,d0
00003318 6620	bne.s	LevSel_Level
0000331a 11fc0010f600	move.b	#id_Special,(v_gamemode).w
00003320 4278fe10	clr.w	(v_zone).w
00003324 11fc0003fe12	move.b	#3,(v_lives).w
0000332a 7000	moveq	#0,d0
0000332c 31c0fe20	move.w	d0,(v_rings).w
00003330 21c0fe22	move.l	d0,(v_time).w
00003334 21c0fe26	move.l	d0,(v_score).w
00003338 4e75	rts	
0000333a 02403fff	andi.w	#$3FFF,d0
0000333e 31c0fe10	move.w	d0,(v_zone).w
00003342 11fc000cf600	move.b	#id_Level,(v_gamemode).w
00003348 11fc0003fe12	move.b	#3,(v_lives).w
0000334e 7000	moveq	#0,d0
00003350 31c0fe20	move.w	d0,(v_rings).w
00003354 21c0fe22	move.l	d0,(v_time).w
00003358 21c0fe26	move.l	d0,(v_score).w
0000335c 11c0fe16	move.b	d0,(v_lastspecial).w
00003360 11c0fe57	move.b	d0,(v_emeralds).w
00003364 21c0fe58	move.l	d0,(v_emldlist).w
00003368 21c0fe5c	move.l	d0,(v_emldlist+4).w
0000336c 11c0fe18	move.b	d0,(v_continues).w
00003370 103c00e0	move.b	#bgm_Fade,d0
00003374 6100e026	bsr.w	QueueSound2
00003378 4e75	rts	
000033b0 31fc001ef614	move.w	#30,(v_generictimer).w
000033b6 11fc0004f62a	move.b	#id_VBlank_Title,(v_vblank_routine).w
000033bc 6100f5ea	bsr.w	WaitForVBlank
000033c0 61002ec4	bsr.w	DeformLayers
000033c4 6100e576	bsr.w	PaletteCycle
000033c8 6100e222	bsr.w	RunPLC
000033cc 3038d008	move.w	(v_player+obX).w,d0
000033d0 5440	addq.w	#2,d0
000033d2 31c0d008	move.w	d0,(v_player+obX).w
000033d6 0c401c00	cmpi.w	#$1C00,d0
000033da 6508	blo.s	GotoDemo_ChkLoop
000033dc 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
000033e2 4e75	rts	
000033e4 02380080f605	andi.b	#btnStart,(v_jpadpress1).w
000033ea 6600fe56	bne.w	Tit_ChkLevSel
000033ee 4a78f614	tst.w	(v_generictimer).w
000033f2 6600ffc2	bne.w	GotoDemo_PreDelayLoop
000033f6 103c00e0	move.b	#bgm_Fade,d0
000033fa 6100dfa0	bsr.w	QueueSound2
000033fe 3038fff2	move.w	(v_demonum).w,d0
00003402 02400007	andi.w	#7,d0
00003406 d040	add.w	d0,d0
00003408 303b004e	move.w	Demo_Levels(pc,d0.w),d0
0000340c 31c0fe10	move.w	d0,(v_zone).w
00003410 5278fff2	addq.w	#1,(v_demonum).w
00003414 0c780004fff2	cmpi.w	#4,(v_demonum).w
0000341a 6506	blo.s	GotoDemo_NoReset
0000341c 31fc0000fff2	move.w	#0,(v_demonum).w
00003422 31fc0001fff0	move.w	#1,(f_demo).w
00003428 11fc0008f600	move.b	#id_Demo,(v_gamemode).w
0000342e 0c400600	cmpi.w	#$600,d0
00003432 660e	bne.s	GotoDemo_NotSS
00003434 11fc0010f600	move.b	#id_Special,(v_gamemode).w
0000343a 4278fe10	clr.w	(v_zone).w
0000343e 4238fe16	clr.b	(v_lastspecial).w
00003442 11fc0003fe12	move.b	#3,(v_lives).w
00003448 7000	moveq	#0,d0
0000344a 31c0fe20	move.w	d0,(v_rings).w
0000344e 21c0fe22	move.l	d0,(v_time).w
00003452 21c0fe26	move.l	d0,(v_score).w
00003456 4e75	rts	
00003460 1238f605	move.b	(v_jpadpress1).w,d1
00003464 02010003	andi.b	#btnUp+btnDn,d1
00003468 6606	bne.s	LevSel_UpDown
0000346a 5378ff80	subq.w	#1,(v_levseldelay).w
0000346e 6a3a	bpl.s	LevSel_SndTest
00003470 31fc000bff80	move.w	#12-1,(v_levseldelay).w
00003476 1238f604	move.b	(v_jpadhold1).w,d1
0000347a 02010003	andi.b	#btnUp+btnDn,d1
0000347e 672a	beq.s	LevSel_SndTest
00003480 3038ff82	move.w	(v_levselitem).w,d0
00003484 08010000	btst	#bitUp,d1
00003488 6706	beq.s	LevSel_Down
0000348a 5340	subq.w	#1,d0
0000348c 6402	bhs.s	LevSel_Down
0000348e 7014	moveq	#levsel_line_count-1,d0
00003490 08010001	btst	#bitDn,d1
00003494 670a	beq.s	LevSel_Refresh
00003496 5240	addq.w	#1,d0
00003498 0c400015	cmpi.w	#levsel_line_count,d0
0000349c 6502	blo.s	LevSel_Refresh
0000349e 7000	moveq	#0,d0
000034a0 31c0ff82	move.w	d0,(v_levselitem).w
000034a4 61000040	bsr.w	LevSelTextLoad
000034a8 4e75	rts	
000034aa 0c780014ff82	cmpi.w	#levsel_sndtest_row,(v_levselitem).w
000034b0 6632	bne.s	LevSel_NoMove
000034b2 1238f605	move.b	(v_jpadpress1).w,d1
000034b6 0201000c	andi.b	#btnR+btnL,d1
000034ba 6728	beq.s	LevSel_NoMove
000034bc 3038ff84	move.w	(v_levselsound).w,d0
000034c0 08010002	btst	#bitL,d1
000034c4 6706	beq.s	LevSel_Right
000034c6 5340	subq.w	#1,d0
000034c8 6402	bhs.s	LevSel_Right
000034ca 704f	moveq	#sfx__Last-$80,d0
000034cc 08010003	btst	#bitR,d1
000034d0 670a	beq.s	LevSel_Refresh2
000034d2 5240	addq.w	#1,d0
000034d4 0c400050	cmpi.w	#sfx__Last-$80+1,d0
000034d8 6502	blo.s	LevSel_Refresh2
000034da 7000	moveq	#0,d0
000034dc 31c0ff84	move.w	d0,(v_levselsound).w
000034e0 61000004	bsr.w	LevSelTextLoad
000034e4 4e75	rts	
000034e6 43f9000035a2	lea	(LevelMenuText).l,a1
000034ec 4df900c00000	lea	(vdp_data_port).l,a6
000034f2 283c62100003	move.l	#($40000000+(((levsel_vram_main)&$3FFF)<<16)+(((levsel_vram_main)&$C000)>>14)),d4
000034f8 363ce680	move.w	#levsel_white,d3
000034fc 7214	moveq	#levsel_line_count-1,d1
000034fe 2d440004	move.l	d4,4(a6)
00003502 61000082	bsr.w	LevSel_ChgLine
00003506 068400800000	addi.l	#$00800000,d4
0000350c 51c9fff0	dbf	d1,.DrawAll
00003510 7000	moveq	#0,d0
00003512 3038ff82	move.w	(v_levselitem).w,d0
00003516 3200	move.w	d0,d1
00003518 283c62100003	move.l	#($40000000+(((levsel_vram_main)&$3FFF)<<16)+(((levsel_vram_main)&$C000)>>14)),d4
0000351e ef48	lsl.w	#7,d0
00003520 4840	swap	d0
00003522 d880	add.l	d0,d4
00003524 43f9000035a2	lea	(LevelMenuText).l,a1
0000352a e749	lsl.w	#3,d1
0000352c 3001	move.w	d1,d0
0000352e d241	add.w	d1,d1
00003530 d240	add.w	d0,d1
00003532 d2c1	adda.w	d1,a1
00003534 363cc680	move.w	#levsel_yellow,d3
00003538 2d440004	move.l	d4,4(a6)
0000353c 61000048	bsr.w	LevSel_ChgLine
00003540 363ce680	move.w	#levsel_white,d3
00003544 0c780014ff82	cmpi.w	#levsel_sndtest_row,(v_levselitem).w
0000354a 6604	bne.s	LevSel_DrawSnd
0000354c 363cc680	move.w	#levsel_yellow,d3
00003550 23fc6c30000300c00004	move.l	#($40000000+(((levsel_vram_sndtestnum)&$3FFF)<<16)+(((levsel_vram_sndtestnum)&$C000)>>14)),(vdp_control_port).l
0000355a 3038ff84	move.w	(v_levselsound).w,d0
0000355e 06400080	addi.w	#$80,d0
00003562 1400	move.b	d0,d2
00003564 e808	lsr.b	#4,d0
00003566 6100000a	bsr.w	LevSel_ChgSnd
0000356a 1002	move.b	d2,d0
0000356c 61000004	bsr.w	LevSel_ChgSnd
00003570 4e75	rts	
00003572 0240000f	andi.w	#$F,d0
00003576 0c00000a	cmpi.b	#$A,d0
0000357a 6504	blo.s	.DrawNum
0000357c 06000007	addi.b	#7,d0
00003580 d043	add.w	d3,d0
00003582 3c80	move.w	d0,(a6)
00003584 4e75	rts	
00003586 7417	moveq	#levsel_line_length-1,d2
00003588 7000	moveq	#0,d0
0000358a 1019	move.b	(a1)+,d0
0000358c 6a0a	bpl.s	.CharOk
0000358e 3cbc0000	move.w	#0,(a6)
00003592 51cafff4	dbf	d2,.LineLoop
00003596 4e75	rts	
00003598 d043	add.w	d3,d0
0000359a 3c80	move.w	d0,(a6)
0000359c 51caffea	dbf	d2,.LineLoop
000035a0 4e75	rts	
000037a2 08f80007f600	bset	#7,(v_gamemode).w
000037a8 4a78fff0	tst.w	(f_demo).w
000037ac 6b08	bmi.s	Level_NoMusicFade
000037ae 103c00e0	move.b	#bgm_Fade,d0
000037b2 6100dbe8	bsr.w	QueueSound2
000037b6 6100de26	bsr.w	ClearPLC
000037ba 6100e696	bsr.w	PaletteFadeOut
000037be 4a78fff0	tst.w	(f_demo).w
000037c2 6b3e	bmi.s	Level_ClrRam
000037c4 46fc2700	move.w	#$2700,sr
000037c8 23fc7000000200c00004	move.l	#($40000000+(((ArtTile_Title_Card*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Card*tile_size)&$C000)>>14)),(vdp_control_port).l
000037d2 41f900038d5a	lea	(Nem_TitleCard).l,a0
000037d8 6100dc66	bsr.w	NemDec
000037dc 46fc2300	move.w	#$2300,sr
000037e0 7000	moveq	#0,d0
000037e2 1038fe10	move.b	(v_zone).w,d0
000037e6 e948	lsl.w	#4,d0
000037e8 45f90001d5a2	lea	(LevelHeaders).l,a2
000037ee 45f20000	lea	(a2,d0.w),a2
000037f2 7000	moveq	#0,d0
000037f4 1012	move.b	(a2),d0
000037f6 6704	beq.s	Level_NoPLC
000037f8 6100dd86	bsr.w	AddPLC
000037fc 7001	moveq	#plcid_Main2,d0
000037fe 6100dd80	bsr.w	AddPLC
00003802 43f8d000	lea	(v_objspace).w,a1
00003806 7000	moveq	#0,d0
00003808 323c07ff	move.w	#.length/4-1,d1
0000380c 22c0	move.l	d0,(a1)+
0000380e 51c9fffc	dbf	d1,.loop
00003812 43f8f628	lea	(v_misc_variables).w,a1
00003816 7000	moveq	#0,d0
00003818 323c0015	move.w	#.length/4-1,d1
0000381c 22c0	move.l	d0,(a1)+
0000381e 51c9fffc	dbf	d1,.loop
00003822 43f8f700	lea	(v_levelvariables).w,a1
00003826 7000	moveq	#0,d0
00003828 323c003f	move.w	#.length/4-1,d1
0000382c 22c0	move.l	d0,(a1)+
0000382e 51c9fffc	dbf	d1,.loop
00003832 43f8fe60	lea	(v_timingandscreenvariables).w,a1
00003836 7000	moveq	#0,d0
00003838 323c0047	move.w	#.length/4-1,d1
0000383c 22c0	move.l	d0,(a1)+
0000383e 51c9fffc	dbf	d1,.loop
00003842 46fc2700	move.w	#$2700,sr
00003846 6100da7c	bsr.w	ClearScreen
0000384a 4df900c00004	lea	(vdp_control_port).l,a6
00003850 3cbc8b03	move.w	#$8B03,(a6)
00003854 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
00003858 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
0000385c 3cbc857c	move.w	#$8500+(vram_sprites>>9),(a6)
00003860 3cbc9001	move.w	#$9001,(a6)
00003864 3cbc8004	move.w	#$8004,(a6)
00003868 3cbc8720	move.w	#$8720,(a6)
0000386c 31fc8adff624	move.w	#$8A00+223,(v_hblank_hreg).w
00003872 3cb8f624	move.w	(v_hblank_hreg).w,(a6)
00003876 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
0000387c 6630	bne.s	Level_LoadPal
0000387e 3cbc8014	move.w	#$8014,(a6)
00003882 7000	moveq	#0,d0
00003884 1038fe11	move.b	(v_act).w,d0
00003888 d040	add.w	d0,d0
0000388a 43f900003c2a	lea	(WaterHeight).l,a1
00003890 30310000	move.w	(a1,d0.w),d0
00003894 31c0f646	move.w	d0,(v_waterpos1).w
00003898 31c0f648	move.w	d0,(v_waterpos2).w
0000389c 31c0f64a	move.w	d0,(v_waterpos3).w
000038a0 4238f64d	clr.b	(v_wtr_routine).w
000038a4 4238f64e	clr.b	(f_wtr_state).w
000038a8 11fc0001f64c	move.b	#1,(f_water).w
000038ae 31fc001efe14	move.w	#30,(v_air).w
000038b4 46fc2300	move.w	#$2300,sr
000038b8 7003	moveq	#palid_Sonic,d0
000038ba 6100e85c	bsr.w	PalLoad
000038be 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000038c4 661c	bne.s	Level_GetBgm
000038c6 700f	moveq	#palid_LZSonWater,d0
000038c8 0c380003fe11	cmpi.b	#act4,(v_act).w
000038ce 6602	bne.s	Level_WaterPal
000038d0 7010	moveq	#palid_SBZ3SonWat,d0
000038d2 6100e85c	bsr.w	PalLoad_Fade_Water
000038d6 4a38fe30	tst.b	(v_lastlamp).w
000038da 6706	beq.s	Level_GetBgm
000038dc 11f8fe53f64e	move.b	(v_lamp_wtrstat).w,(f_wtr_state).w
000038e2 4a78fff0	tst.w	(f_demo).w
000038e6 6b5e	bmi.s	Level_SkipTtlCard
000038e8 7000	moveq	#0,d0
000038ea 1038fe10	move.b	(v_zone).w,d0
000038ee 0c780103fe10	cmpi.w	#id_LZ_act4,(v_zone).w
000038f4 6602	bne.s	Level_BgmNotLZ4
000038f6 7005	moveq	#5,d0
000038f8 0c780502fe10	cmpi.w	#id_FZ,(v_zone).w
000038fe 6602	bne.s	Level_PlayBgm
00003900 7006	moveq	#6,d0
00003902 43f90000379a	lea	(MusicList).l,a1
00003908 10310000	move.b	(a1,d0.w),d0
0000390c 6100da88	bsr.w	QueueSound1
00003910 11fc0034d080	move.b	#id_TitleCard,(v_titlecard).w
00003916 11fc000cf62a	move.b	#id_VBlank_TitleCards,(v_vblank_routine).w
0000391c 6100f08a	bsr.w	WaitForVBlank
00003920 4eb90000d338	jsr	(ExecuteObjects).l
00003926 4eb90000d65e	jsr	(BuildSprites).l
0000392c 6100dcbe	bsr.w	RunPLC
00003930 3038d108	move.w	(v_ttlcardact+obX).w,d0
00003934 b078d130	cmp.w	(v_ttlcardact+card_mainX).w,d0
00003938 66dc	bne.s	Level_TtlCardLoop
0000393a 4ab8f680	tst.l	(v_plc_buffer).w
0000393e 66d6	bne.s	Level_TtlCardLoop
00003940 4eb90001c822	jsr	(Hud_Base).l
00003946 7003	moveq	#palid_Sonic,d0
00003948 6100e7b2	bsr.w	PalLoad_Fade
0000394c 61002570	bsr.w	LevelSizeLoad
00003950 61002934	bsr.w	DeformLayers
00003954 08f80002f754	bset	#2,(v_fg_scroll_flags).w
0000395a 6100334a	bsr.w	LevelDataLoad
0000395e 610032f8	bsr.w	LoadTilesFromStart
00003962 4eb900014c4c	jsr	(ConvertCollisionArray).l
00003968 61000786	bsr.w	ColIndexLoad
0000396c 61000262	bsr.w	LZWaterFeatures
00003970 11fc0001d000	move.b	#id_SonicPlayer,(v_player).w
00003976 4a78fff0	tst.w	(f_demo).w
0000397a 6b06	bmi.s	Level_ChkDebug
0000397c 11fc0021d040	move.b	#id_HUD,(v_hud).w
00003982 4a38ffe2	tst.b	(f_debugcheat).w
00003986 670e	beq.s	Level_ChkWater
00003988 08380006f604	btst	#bitA,(v_jpadhold1).w
0000398e 6706	beq.s	Level_ChkWater
00003990 11fc0001fffa	move.b	#1,(f_debugmode).w
00003996 31fc0000f602	move.w	#0,(v_jpadhold2).w
0000399c 31fc0000f604	move.w	#0,(v_jpadhold1).w
000039a2 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000039a8 6618	bne.s	Level_LoadObj
000039aa 11fc001bd780	move.b	#id_WaterSurface,(v_watersurface1).w
000039b0 31fc0060d788	move.w	#$60,(v_watersurface1+obX).w
000039b6 11fc001bd7c0	move.b	#id_WaterSurface,(v_watersurface2).w
000039bc 31fc0120d7c8	move.w	#$120,(v_watersurface2+obX).w
000039c2 4eb90000d8da	jsr	(ObjPosLoad).l
000039c8 4eb90000d338	jsr	(ExecuteObjects).l
000039ce 4eb90000d65e	jsr	(BuildSprites).l
000039d4 7000	moveq	#0,d0
000039d6 4a38fe30	tst.b	(v_lastlamp).w
000039da 660c	bne.s	Level_SkipClr
000039dc 31c0fe20	move.w	d0,(v_rings).w
000039e0 21c0fe22	move.l	d0,(v_time).w
000039e4 11c0fe1b	move.b	d0,(v_lifecount).w
000039e8 11c0fe1a	move.b	d0,(f_timeover).w
000039ec 11c0fe2c	move.b	d0,(v_shield).w
000039f0 11c0fe2d	move.b	d0,(v_invinc).w
000039f4 11c0fe2e	move.b	d0,(v_shoes).w
000039f8 11c0fe2f	move.b	d0,(v_unused1).w
000039fc 31c0fe08	move.w	d0,(v_debuguse).w
00003a00 31c0fe02	move.w	d0,(f_restart).w
00003a04 31c0fe04	move.w	d0,(v_framecount).w
00003a08 6100070e	bsr.w	OscillateNumInit
00003a0c 11fc0001fe1f	move.b	#1,(f_scorecount).w
00003a12 11fc0001fe1d	move.b	#1,(f_ringcount).w
00003a18 11fc0001fe1e	move.b	#1,(f_timecount).w
00003a1e 31fc0000f790	move.w	#0,(v_btnpushtime1).w
00003a24 43f900004080	lea	(DemoDataPtr).l,a1
00003a2a 7000	moveq	#0,d0
00003a2c 1038fe10	move.b	(v_zone).w,d0
00003a30 e548	lsl.w	#2,d0
00003a32 22710000	movea.l	(a1,d0.w),a1
00003a36 4a78fff0	tst.w	(f_demo).w
00003a3a 6a12	bpl.s	Level_Demo
00003a3c 43f9000040a0	lea	(DemoEndDataPtr).l,a1
00003a42 3038fff4	move.w	(v_creditsnum).w,d0
00003a46 5340	subq.w	#1,d0
00003a48 e548	lsl.w	#2,d0
00003a4a 22710000	movea.l	(a1,d0.w),a1
00003a4e 11e90001f792	move.b	1(a1),(v_btnpushtime2).w
00003a54 5338f792	subq.b	#1,(v_btnpushtime2).w
00003a58 31fc0708f614	move.w	#1800,(v_generictimer).w
00003a5e 4a78fff0	tst.w	(f_demo).w
00003a62 6a14	bpl.s	Level_ChkWaterPal
00003a64 31fc021cf614	move.w	#540,(v_generictimer).w
00003a6a 0c780004fff4	cmpi.w	#4,(v_creditsnum).w
00003a70 6606	bne.s	Level_ChkWaterPal
00003a72 31fc01fef614	move.w	#510,(v_generictimer).w
00003a78 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00003a7e 6610	bne.s	Level_Delay
00003a80 700b	moveq	#palid_LZWater,d0
00003a82 0c380003fe11	cmpi.b	#act4,(v_act).w
00003a88 6602	bne.s	Level_WtrNotSbz
00003a8a 700d	moveq	#palid_SBZ3Water,d0
00003a8c 6100e6be	bsr.w	PalLoad_Water
00003a90 323c0003	move.w	#4-1,d1
00003a94 11fc0008f62a	move.b	#id_VBlank_Levels,(v_vblank_routine).w
00003a9a 6100ef0c	bsr.w	WaitForVBlank
00003a9e 51c9fff4	dbf	d1,Level_DelayLoop
00003aa2 31fc202ff626	move.w	#$202F,(v_pfade_start).w
00003aa8 6100e308	bsr.w	PalFadeIn_Alt
00003aac 4a78fff0	tst.w	(f_demo).w
00003ab0 6b12	bmi.s	Level_ClrCardArt
00003ab2 5438d0a4	addq.b	#2,(v_ttlcardname+obRoutine).w
00003ab6 5838d0e4	addq.b	#4,(v_ttlcardzone+obRoutine).w
00003aba 5838d124	addq.b	#4,(v_ttlcardact+obRoutine).w
00003abe 5838d164	addq.b	#4,(v_ttlcardoval+obRoutine).w
00003ac2 6018	bra.s	Level_StartGame
00003ac4 7002	moveq	#plcid_Explode,d0
00003ac6 4eb900001580	jsr	(AddPLC).l
00003acc 7000	moveq	#0,d0
00003ace 1038fe10	move.b	(v_zone).w,d0
00003ad2 06400015	addi.w	#plcid_GHZAnimals,d0
00003ad6 4eb900001580	jsr	(AddPLC).l
00003adc 08b80007f600	bclr	#7,(v_gamemode).w
00003ae2 6100d8c4	bsr.w	PauseGame
00003ae6 11fc0008f62a	move.b	#id_VBlank_Levels,(v_vblank_routine).w
00003aec 6100eeba	bsr.w	WaitForVBlank
00003af0 5278fe04	addq.w	#1,(v_framecount).w
00003af4 610004da	bsr.w	MoveSonicInDemo
00003af8 610000d6	bsr.w	LZWaterFeatures
00003afc 4eb90000d338	jsr	(ExecuteObjects).l
00003b02 4a78fe08	tst.w	(v_debuguse).w
00003b06 6608	bne.s	Level_DoScroll
00003b08 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00003b0e 6404	bhs.s	Level_SkipScroll
00003b10 61002774	bsr.w	DeformLayers
00003b14 4eb90000d65e	jsr	(BuildSprites).l
00003b1a 4eb90000d8da	jsr	(ObjPosLoad).l
00003b20 6100de1a	bsr.w	PaletteCycle
00003b24 6100dac6	bsr.w	RunPLC
00003b28 61000644	bsr.w	OscillateNumDo
00003b2c 610006d8	bsr.w	SynchroAnimate
00003b30 61000742	bsr.w	SignpostArtLoad
00003b34 0c380008f600	cmpi.b	#id_Demo,(v_gamemode).w
00003b3a 6714	beq.s	Level_ChkDemo
00003b3c 4a78fe02	tst.w	(f_restart).w
00003b40 6600fc60	bne.w	GM_Level
00003b44 0c38000cf600	cmpi.b	#id_Level,(v_gamemode).w
00003b4a 6700ff96	beq.w	Level_MainLoop
00003b4e 4e75	rts	
00003b50 4a78fe02	tst.w	(f_restart).w
00003b54 6618	bne.s	Level_EndDemo
00003b56 4a78f614	tst.w	(v_generictimer).w
00003b5a 6712	beq.s	Level_EndDemo
00003b5c 0c380008f600	cmpi.b	#id_Demo,(v_gamemode).w
00003b62 6700ff7e	beq.w	Level_MainLoop
00003b66 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
00003b6c 4e75	rts	
00003b6e 0c380008f600	cmpi.b	#id_Demo,(v_gamemode).w
00003b74 6612	bne.s	Level_FadeDemo
00003b76 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
00003b7c 4a78fff0	tst.w	(f_demo).w
00003b80 6a06	bpl.s	Level_FadeDemo
00003b82 11fc001cf600	move.b	#id_Credits,(v_gamemode).w
00003b88 31fc003cf614	move.w	#60,(v_generictimer).w
00003b8e 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00003b94 4278f794	clr.w	(v_palchgspeed).w
00003b98 11fc0008f62a	move.b	#id_VBlank_Levels,(v_vblank_routine).w
00003b9e 6100ee08	bsr.w	WaitForVBlank
00003ba2 6100042c	bsr.w	MoveSonicInDemo
00003ba6 4eb90000d338	jsr	(ExecuteObjects).l
00003bac 4eb90000d65e	jsr	(BuildSprites).l
00003bb2 4eb90000d8da	jsr	(ObjPosLoad).l
00003bb8 5378f794	subq.w	#1,(v_palchgspeed).w
00003bbc 6a0a	bpl.s	Level_FDLoop_NoDim
00003bbe 31fc0002f794	move.w	#2,(v_palchgspeed).w
00003bc4 6100e2ac	bsr.w	FadeOut_ToBlack
00003bc8 4a78f614	tst.w	(v_generictimer).w
00003bcc 66ca	bne.s	Level_FDLoop
00003bce 4e75	rts	
00003bd0 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00003bd6 6650	bne.s	.notlabyrinth
00003bd8 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00003bde 640c	bhs.s	.setheight
00003be0 61000250	bsr.w	LZWindTunnels
00003be4 6100034e	bsr.w	LZWaterSlides
00003be8 61000048	bsr.w	LZDynamicWater
00003bec 4238f64e	clr.b	(f_wtr_state).w
00003bf0 7000	moveq	#0,d0
00003bf2 1038fe60	move.b	(v_oscillate+2).w,d0
00003bf6 e248	lsr.w	#1,d0
00003bf8 d078f648	add.w	(v_waterpos2).w,d0
00003bfc 31c0f646	move.w	d0,(v_waterpos1).w
00003c00 3038f646	move.w	(v_waterpos1).w,d0
00003c04 9078f704	sub.w	(v_screenposy).w,d0
00003c08 6410	bcc.s	.isbelow
00003c0a 4a40	tst.w	d0
00003c0c 6a0c	bpl.s	.isbelow
00003c0e 11fc00dff625	move.b	#223,(v_hblank_line).w
00003c14 11fc0001f64e	move.b	#1,(f_wtr_state).w
00003c1a 0c4000df	cmpi.w	#223,d0
00003c1e 6504	blo.s	.isvisible
00003c20 303c00df	move.w	#223,d0
00003c24 11c0f625	move.b	d0,(v_hblank_line).w
00003c28 4e75	rts	
00003c32 7000	moveq	#0,d0
00003c34 1038fe11	move.b	(v_act).w,d0
00003c38 d040	add.w	d0,d0
00003c3a 303b0020	move.w	DynWater_Index(pc,d0.w),d0
00003c3e 4ebb001c	jsr	DynWater_Index(pc,d0.w)
00003c42 7200	moveq	#0,d1
00003c44 1238f64c	move.b	(f_water).w,d1
00003c48 3038f64a	move.w	(v_waterpos3).w,d0
00003c4c 9078f648	sub.w	(v_waterpos2).w,d0
00003c50 6708	beq.s	.exit
00003c52 6402	bcc.s	.movewater
00003c54 4441	neg.w	d1
00003c56 d378f648	add.w	d1,(v_waterpos2).w
00003c5a 4e75	rts	
00003c64 3038f700	move.w	(v_screenposx).w,d0
00003c68 1438f64d	move.b	(v_wtr_routine).w,d2
00003c6c 6662	bne.s	.routine2
00003c6e 323c00b8	move.w	#$B8,d1
00003c72 0c400600	cmpi.w	#$600,d0
00003c76 653c	blo.s	.setwater
00003c78 323c0108	move.w	#$108,d1
00003c7c 0c780200d00c	cmpi.w	#$200,(v_player+obY).w
00003c82 6536	blo.s	.sonicishigh
00003c84 0c400c00	cmpi.w	#$C00,d0
00003c88 652a	blo.s	.setwater
00003c8a 323c0318	move.w	#$318,d1
00003c8e 0c401080	cmpi.w	#$1080,d0
00003c92 6520	blo.s	.setwater
00003c94 11fc0080f7e5	move.b	#$80,(f_switch+5).w
00003c9a 323c05c8	move.w	#$5C8,d1
00003c9e 0c401380	cmpi.w	#$1380,d0
00003ca2 6510	blo.s	.setwater
00003ca4 323c03a8	move.w	#$3A8,d1
00003ca8 b278f648	cmp.w	(v_waterpos2).w,d1
00003cac 6606	bne.s	.setwater
00003cae 11fc0001f64d	move.b	#1,(v_wtr_routine).w
00003cb4 31c1f64a	move.w	d1,(v_waterpos3).w
00003cb8 4e75	rts	
00003cba 0c400c80	cmpi.w	#$C80,d0
00003cbe 65f4	blo.s	.setwater
00003cc0 323c00e8	move.w	#$E8,d1
00003cc4 0c401500	cmpi.w	#$1500,d0
00003cc8 65ea	blo.s	.setwater
00003cca 323c0108	move.w	#$108,d1
00003cce 60e4	bra.s	.setwater
00003cd0 5302	subq.b	#1,d2
00003cd2 6620	bne.s	.skip
00003cd4 0c7802e0d00c	cmpi.w	#$2E0,(v_player+obY).w
00003cda 6418	bhs.s	.skip
00003cdc 323c03a8	move.w	#$3A8,d1
00003ce0 0c401300	cmpi.w	#$1300,d0
00003ce4 650a	blo.s	.setwater2
00003ce6 323c0108	move.w	#$108,d1
00003cea 11fc0002f64d	move.b	#2,(v_wtr_routine).w
00003cf0 31c1f64a	move.w	d1,(v_waterpos3).w
00003cf4 4e75	rts	
00003cf6 3038f700	move.w	(v_screenposx).w,d0
00003cfa 323c0328	move.w	#$328,d1
00003cfe 0c400500	cmpi.w	#$500,d0
00003d02 650e	blo.s	.setwater
00003d04 323c03c8	move.w	#$3C8,d1
00003d08 0c400b00	cmpi.w	#$B00,d0
00003d0c 6504	blo.s	.setwater
00003d0e 323c0428	move.w	#$428,d1
00003d12 31c1f64a	move.w	d1,(v_waterpos3).w
00003d16 4e75	rts	
00003d18 3038f700	move.w	(v_screenposx).w,d0
00003d1c 1438f64d	move.b	(v_wtr_routine).w,d2
00003d20 663c	bne.s	.routine2
00003d22 323c0900	move.w	#$900,d1
00003d26 0c400600	cmpi.w	#$600,d0
00003d2a 6528	blo.s	.setwaterlz3
00003d2c 0c7803c0d00c	cmpi.w	#$3C0,(v_player+obY).w
00003d32 6520	blo.s	.setwaterlz3
00003d34 0c780600d00c	cmpi.w	#$600,(v_player+obY).w
00003d3a 6418	bhs.s	.setwaterlz3
00003d3c 323c04c8	move.w	#$4C8,d1
00003d40 11fc004ba506	move.b	#$4B,(v_lvllayout_fg+((layout_row*2)+6)).w
00003d46 11fc0001f64d	move.b	#1,(v_wtr_routine).w
00003d4c 303c00b7	move.w	#sfx_Rumbling,d0
00003d50 6100d64a	bsr.w	QueueSound2
00003d54 31c1f64a	move.w	d1,(v_waterpos3).w
00003d58 31c1f648	move.w	d1,(v_waterpos2).w
00003d5c 4e75	rts	
00003d5e 5302	subq.b	#1,d2
00003d60 6646	bne.s	.routine3
00003d62 323c04c8	move.w	#$4C8,d1
00003d66 0c400770	cmpi.w	#$770,d0
00003d6a 6536	blo.s	.setwater2
00003d6c 323c0308	move.w	#$308,d1
00003d70 0c401400	cmpi.w	#$1400,d0
00003d74 652c	blo.s	.setwater2
00003d76 0c780508f64a	cmpi.w	#$508,(v_waterpos3).w
00003d7c 6710	beq.s	.sonicislow
00003d7e 0c780600d00c	cmpi.w	#$600,(v_player+obY).w
00003d84 6408	bhs.s	.sonicislow
00003d86 0c780280d00c	cmpi.w	#$280,(v_player+obY).w
00003d8c 6414	bhs.s	.setwater2
00003d8e 323c0508	move.w	#$508,d1
00003d92 31c1f648	move.w	d1,(v_waterpos2).w
00003d96 0c401770	cmpi.w	#$1770,d0
00003d9a 6506	blo.s	.setwater2
00003d9c 11fc0002f64d	move.b	#2,(v_wtr_routine).w
00003da2 31c1f64a	move.w	d1,(v_waterpos3).w
00003da6 4e75	rts	
00003da8 5302	subq.b	#1,d2
00003daa 6626	bne.s	.routine4
00003dac 323c0508	move.w	#$508,d1
00003db0 0c401860	cmpi.w	#$1860,d0
00003db4 6516	blo.s	.setwater3
00003db6 323c0188	move.w	#$188,d1
00003dba 0c401af0	cmpi.w	#$1AF0,d0
00003dbe 6406	bhs.s	.loc_3DC6
00003dc0 b278f648	cmp.w	(v_waterpos2).w,d1
00003dc4 6606	bne.s	.setwater3
00003dc6 11fc0003f64d	move.b	#3,(v_wtr_routine).w
00003dcc 31c1f64a	move.w	d1,(v_waterpos3).w
00003dd0 4e75	rts	
00003dd2 5302	subq.b	#1,d2
00003dd4 6638	bne.s	.routine5
00003dd6 323c0188	move.w	#$188,d1
00003dda 0c401af0	cmpi.w	#$1AF0,d0
00003dde 6524	blo.s	.setwater4
00003de0 323c0900	move.w	#$900,d1
00003de4 0c401bc0	cmpi.w	#$1BC0,d0
00003de8 651a	blo.s	.setwater4
00003dea 11fc0004f64d	move.b	#4,(v_wtr_routine).w
00003df0 31fc0608f64a	move.w	#$608,(v_waterpos3).w
00003df6 31fc07c0f648	move.w	#$7C0,(v_waterpos2).w
00003dfc 11fc0001f7e8	move.b	#1,(f_switch+8).w
00003e02 4e75	rts	
00003e04 31c1f64a	move.w	d1,(v_waterpos3).w
00003e08 31c1f648	move.w	d1,(v_waterpos2).w
00003e0c 4e75	rts	
00003e0e 0c401e00	cmpi.w	#$1E00,d0
00003e12 6506	blo.s	.dontset
00003e14 31fc0128f64a	move.w	#$128,(v_waterpos3).w
00003e1a 4e75	rts	
00003e1c 323c0228	move.w	#$228,d1
00003e20 0c780f00f700	cmpi.w	#$F00,(v_screenposx).w
00003e26 6504	blo.s	.setwater
00003e28 323c04c8	move.w	#$4C8,d1
00003e2c 31c1f64a	move.w	d1,(v_waterpos3).w
00003e30 4e75	rts	
00003e32 4a78fe08	tst.w	(v_debuguse).w
00003e36 660000d2	bne.w	.quit
00003e3a 45f900003f14	lea	(LZWind_Data+8).l,a2
00003e40 7000	moveq	#0,d0
00003e42 1038fe11	move.b	(v_act).w,d0
00003e46 e748	lsl.w	#3,d0
00003e48 d4c0	adda.w	d0,a2
00003e4a 7200	moveq	#0,d1
00003e4c 4a38fe11	tst.b	(v_act).w
00003e50 6604	bne.s	.notact1
00003e52 7201	moveq	#1,d1
00003e54 514a	subq.w	#8,a2
00003e56 43f8d000	lea	(v_player).w,a1
00003e5a 30290008	move.w	obX(a1),d0
00003e5e b052	cmp.w	(a2),d0
00003e60 65000092	blo.w	.chknext
00003e64 b06a0004	cmp.w	4(a2),d0
00003e68 6400008a	bhs.w	.chknext
00003e6c 3429000c	move.w	obY(a1),d2
00003e70 b46a0002	cmp.w	2(a2),d2
00003e74 657e	blo.s	.chknext
00003e76 b46a0006	cmp.w	6(a2),d2
00003e7a 6478	bhs.s	.chknext
00003e7c 1038fe0f	move.b	(v_vblank_byte).w,d0
00003e80 0200003f	andi.b	#$3F,d0
00003e84 660a	bne.s	.skipsound
00003e86 303c00d0	move.w	#sfx_Waterfall,d0
00003e8a 4eb90000139c	jsr	(QueueSound2).l
00003e90 4a38f7c9	tst.b	(f_wtunnelallow).w
00003e94 66000074	bne.w	.quit
00003e98 0c2900040024	cmpi.b	#4,obRoutine(a1)
00003e9e 6466	bhs.s	.clrquit
00003ea0 11fc0001f7c7	move.b	#1,(f_wtunnelmode).w
00003ea6 04400080	subi.w	#$80,d0
00003eaa b052	cmp.w	(a2),d0
00003eac 6410	bhs.s	.movesonic
00003eae 7002	moveq	#2,d0
00003eb0 0c380001fe11	cmpi.b	#act2,(v_act).w
00003eb6 6602	bne.s	.notact2
00003eb8 4440	neg.w	d0
00003eba d169000c	add.w	d0,obY(a1)
00003ebe 58690008	addq.w	#4,obX(a1)
00003ec2 337c04000010	move.w	#$400,obVelX(a1)
00003ec8 337c00000012	move.w	#0,obVelY(a1)
00003ece 137c000f001c	move.b	#id_Float2,obAnim(a1)
00003ed4 08e900010022	bset	#1,obStatus(a1)
00003eda 08380000f602	btst	#bitUp,(v_jpadhold2).w
00003ee0 6704	beq.s	.down
00003ee2 5369000c	subq.w	#1,obY(a1)
00003ee6 08380001f602	btst	#bitDn,(v_jpadhold2).w
00003eec 6704	beq.s	.end
00003eee 5269000c	addq.w	#1,obY(a1)
00003ef2 4e75	rts	
00003ef4 504a	addq.w	#8,a2
00003ef6 51c9ff62	dbf	d1,.chksonic
00003efa 4a38f7c7	tst.b	(f_wtunnelmode).w
00003efe 670a	beq.s	.quit
00003f00 137c0000001c	move.b	#id_Walk,obAnim(a1)
00003f06 4238f7c7	clr.b	(f_wtunnelmode).w
00003f0a 4e75	rts	
00003f34 43f8d000	lea	(v_player).w,a1
00003f38 082900010022	btst	#1,obStatus(a1)
00003f3e 662a	bne.s	loc_3F6A
00003f40 3029000c	move.w	obY(a1),d0
00003f44 e248	lsr.w	#1,d0
00003f46 02400380	andi.w	#$380,d0
00003f4a 12290008	move.b	obX(a1),d1
00003f4e 0241007f	andi.w	#$7F,d1
00003f52 d041	add.w	d1,d0
00003f54 45f8a400	lea	(v_lvllayout_fg).w,a2
00003f58 10320000	move.b	(a2,d0.w),d0
00003f5c 45fa0071	lea	Slide_Chunks_End(pc),a2
00003f60 7206	moveq	#Slide_Chunks_End-Slide_Chunks-1,d1
00003f62 b022	cmp.b	-(a2),d0
00003f64 57c9fffc	dbeq	d1,loc_3F62
00003f68 6712	beq.s	LZSlide_Move
00003f6a 4a38f7ca	tst.b	(f_slidemode).w
00003f6e 670a	beq.s	locret_3F7A
00003f70 337c0005003e	move.w	#5,locktime(a1)
00003f76 4238f7ca	clr.b	(f_slidemode).w
00003f7a 4e75	rts	
00003f7c 0c410003	cmpi.w	#3,d1
00003f80 6402	bhs.s	loc_3F84
00003f82 4e71	nop	
00003f84 08a900000022	bclr	#0,obStatus(a1)
00003f8a 103b1034	move.b	Slide_Speeds(pc,d1.w),d0
00003f8e 13400014	move.b	d0,obInertia(a1)
00003f92 6a06	bpl.s	loc_3F9A
00003f94 08e900000022	bset	#0,obStatus(a1)
00003f9a 42290015	clr.b	obInertia+1(a1)
00003f9e 137c001b001c	move.b	#id_Slide,obAnim(a1)
00003fa4 11fc0001f7ca	move.b	#1,(f_slidemode).w
00003faa 1038fe0f	move.b	(v_vblank_byte).w,d0
00003fae 0200001f	andi.b	#$1F,d0
00003fb2 660a	bne.s	locret_3FBE
00003fb4 303c00d0	move.w	#sfx_Waterfall,d0
00003fb8 4eb90000139c	jsr	(QueueSound2).l
00003fbe 4e75	rts	
00003fd0 4a78fff0	tst.w	(f_demo).w
00003fd4 663a	bne.s	MDemo_On
00003fd6 4e75	rts	
00003fd8 43f900080000	lea	(EndOfRom).l,a1
00003fde 3038f790	move.w	(v_btnpushtime1).w,d0
00003fe2 d2c0	adda.w	d0,a1
00003fe4 1038f604	move.b	(v_jpadhold1).w,d0
00003fe8 b011	cmp.b	(a1),d0
00003fea 660e	bne.s	.next
00003fec 52290001	addq.b	#1,1(a1)
00003ff0 0c2900ff0001	cmpi.b	#$FF,1(a1)
00003ff6 6702	beq.s	.next
00003ff8 4e75	rts	
00003ffa 13400002	move.b	d0,2(a1)
00003ffe 137c00000003	move.b	#0,3(a1)
00004004 5478f790	addq.w	#2,(v_btnpushtime1).w
00004008 027803fff790	andi.w	#$3FF,(v_btnpushtime1).w
0000400e 4e75	rts	
00004010 4a38f604	tst.b	(v_jpadhold1).w
00004014 6a0c	bpl.s	.dontquit
00004016 4a78fff0	tst.w	(f_demo).w
0000401a 6b06	bmi.s	.dontquit
0000401c 11fc0004f600	move.b	#id_Title,(v_gamemode).w
00004022 43f900004080	lea	(DemoDataPtr).l,a1
00004028 7000	moveq	#0,d0
0000402a 1038fe10	move.b	(v_zone).w,d0
0000402e 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
00004034 6602	bne.s	.notspecial
00004036 7006	moveq	#6,d0
00004038 e548	lsl.w	#2,d0
0000403a 22710000	movea.l	(a1,d0.w),a1
0000403e 4a78fff0	tst.w	(f_demo).w
00004042 6a12	bpl.s	.notcredits
00004044 43f9000040a0	lea	(DemoEndDataPtr).l,a1
0000404a 3038fff4	move.w	(v_creditsnum).w,d0
0000404e 5340	subq.w	#1,d0
00004050 e548	lsl.w	#2,d0
00004052 22710000	movea.l	(a1,d0.w),a1
00004056 3038f790	move.w	(v_btnpushtime1).w,d0
0000405a d2c0	adda.w	d0,a1
0000405c 1011	move.b	(a1),d0
0000405e 41f8f604	lea	(v_jpadhold1).w,a0
00004062 1200	move.b	d0,d1
00004064 1410	move.b	(a0),d2
00004066 b500	eor.b	d2,d0
00004068 10c1	move.b	d1,(a0)+
0000406a c001	and.b	d1,d0
0000406c 10c0	move.b	d0,(a0)+
0000406e 5338f792	subq.b	#1,(v_btnpushtime2).w
00004072 640a	bcc.s	.end
00004074 11e90003f792	move.b	3(a1),(v_btnpushtime2).w
0000407a 5478f790	addq.w	#2,(v_btnpushtime1).w
0000407e 4e75	rts	
000040f0 7000	moveq	#0,d0
000040f2 1038fe10	move.b	(v_zone).w,d0
000040f6 e548	lsl.w	#2,d0
000040f8 21fb0006f796	move.l	ColPointers(pc,d0.w),(v_collindex).w
000040fe 4e75	rts	
00004118 43f8fe5e	lea	(v_oscillate).w,a1
0000411c 45f90000412c	lea	(.baselines).l,a2
00004122 7220	moveq	#$20,d1
00004124 32da	move.w	(a2)+,(a1)+
00004126 51c9fffc	dbf	d1,.loop
0000412a 4e75	rts	
0000416e 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00004174 644e	bhs.s	.end
00004176 43f8fe5e	lea	(v_oscillate).w,a1
0000417a 45f9000041c6	lea	(.settings).l,a2
00004180 3619	move.w	(a1)+,d3
00004182 720f	moveq	#$F,d1
00004184 341a	move.w	(a2)+,d2
00004186 381a	move.w	(a2)+,d4
00004188 0303	btst	d1,d3
0000418a 6618	bne.s	.down
0000418c 30290002	move.w	2(a1),d0
00004190 d042	add.w	d2,d0
00004192 33400002	move.w	d0,2(a1)
0000419e 621a	bhi.s	.next
000041a0 03c3	bset	d1,d3
000041a2 6016	bra.s	.next
000041a4 30290002	move.w	2(a1),d0
000041a8 9042	sub.w	d2,d0
000041aa 33400002	move.w	d0,2(a1)
000041b6 6302	bls.s	.next
000041b8 0383	bclr	d1,d3
000041ba 5849	addq.w	#4,a1
000041bc 51c9ffc6	dbf	d1,.loop
000041c0 31c3fe5e	move.w	d3,(v_oscillate).w
000041c4 4e75	rts	
00004206 5338fec0	subq.b	#1,(v_ani0_time).w
0000420a 6a10	bpl.s	Sync2
0000420c 11fc000bfec0	move.b	#12-1,(v_ani0_time).w
00004212 5338fec1	subq.b	#1,(v_ani0_frame).w
00004216 02380007fec1	andi.b	#7,(v_ani0_frame).w
0000421c 5338fec2	subq.b	#1,(v_ani1_time).w
00004220 6a10	bpl.s	Sync3
00004222 11fc0007fec2	move.b	#8-1,(v_ani1_time).w
00004228 5238fec3	addq.b	#1,(v_ani1_frame).w
0000422c 02380003fec3	andi.b	#3,(v_ani1_frame).w
00004232 5338fec4	subq.b	#1,(v_ani2_time).w
00004236 6a18	bpl.s	Sync4
00004238 11fc0007fec4	move.b	#8-1,(v_ani2_time).w
0000423e 5238fec5	addq.b	#1,(v_ani2_frame).w
00004242 0c380006fec5	cmpi.b	#6,(v_ani2_frame).w
00004248 6506	blo.s	Sync4
0000424a 11fc0000fec5	move.b	#0,(v_ani2_frame).w
00004250 4a38fec6	tst.b	(v_ani3_time).w
00004254 671c	beq.s	SyncEnd
00004256 7000	moveq	#0,d0
00004258 1038fec6	move.b	(v_ani3_time).w,d0
0000425c d078fec8	add.w	(v_ani3_buf).w,d0
00004260 31c0fec8	move.w	d0,(v_ani3_buf).w
00004264 ef58	rol.w	#7,d0
00004266 02400003	andi.w	#3,d0
0000426a 11c0fec7	move.b	d0,(v_ani3_frame).w
0000426e 5338fec6	subq.b	#1,(v_ani3_time).w
00004272 4e75	rts	
00004274 4a78fe08	tst.w	(v_debuguse).w
00004278 66000030	bne.w	.return
0000427c 0c380002fe11	cmpi.b	#act3,(v_act).w
00004282 6726	beq.s	.return
00004284 3038f700	move.w	(v_screenposx).w,d0
00004288 3238f72a	move.w	(v_limitright2).w,d1
0000428c 04410100	subi.w	#$100,d1
00004290 b041	cmp.w	d1,d0
00004292 6d16	blt.s	.return
00004294 4a38fe1e	tst.b	(f_timecount).w
00004298 6710	beq.s	.return
0000429a b278f728	cmp.w	(v_limitleft2).w,d1
0000429e 670a	beq.s	.return
000042a0 31c1f728	move.w	d1,(v_limitleft2).w
000042a4 7012	moveq	#plcid_Signpost,d0
000042a6 6000d30a	bra.w	NewPLC
000042aa 4e75	rts	
000045dc 303c00ca	move.w	#sfx_EnterSS,d0
000045e0 6100cdba	bsr.w	QueueSound2
000045e4 6100d996	bsr.w	PaletteWhiteOut
000045e8 46fc2700	move.w	#$2700,sr
000045ec 4df900c00004	lea	(vdp_control_port).l,a6
000045f2 3cbc8b03	move.w	#$8B03,(a6)
000045f6 3cbc8004	move.w	#$8004,(a6)
000045fa 31fc8aaff624	move.w	#$8A00+175,(v_hblank_hreg).w
00004600 3cbc9011	move.w	#$9011,(a6)
00004604 3038f60c	move.w	(v_vdp_buffer1).w,d0
00004608 020000bf	andi.b	#%10111111,d0
0000460c 33c000c00004	move.w	d0,(vdp_control_port).l
00004612 6100ccb0	bsr.w	ClearScreen
00004616 46fc2300	move.w	#$2300,sr
0000461a 4bf900c00004	lea	(vdp_control_port).l,a5
00004620 3abc8f01	move.w	#$8F01,(a5)
00004624 2abc946f93ff	move.l	#$94000000+((((ArtTile_SS_Plane_5*tile_size)-(ArtTile_SS_Plane_1*tile_size+plane_size_64x32)-1)&$FF00)<<8)+$9300+(((ArtTile_SS_Plane_5*tile_size)-(ArtTile_SS_Plane_1*tile_size+plane_size_64x32)-1)&$FF),(a5)
0000462a 3abc9780	move.w	#$9780,(a5)
0000462e 2abc50000081	move.l	#$40000080+(((ArtTile_SS_Plane_1*tile_size+plane_size_64x32)&$3FFF)<<16)+(((ArtTile_SS_Plane_1*tile_size+plane_size_64x32)&$C000)>>14),(a5)
00004634 33fc000000c00000	move.w	#(0)|(0)<<8,(vdp_data_port).l
0000463c 3215	move.w	(a5),d1
0000463e 08010001	btst	#1,d1
00004642 66f8	bne.s	.wait
00004644 3abc8f02	move.w	#$8F02,(a5)
00004648 61000252	bsr.w	SS_BGLoad
0000464c 7014	moveq	#plcid_SpecialStage,d0
0000464e 6100d09c	bsr.w	QuickPLC
00004652 43f8d000	lea	(v_objspace).w,a1
00004656 7000	moveq	#0,d0
00004658 323c07ff	move.w	#.length/4-1,d1
0000465c 22c0	move.l	d0,(a1)+
0000465e 51c9fffc	dbf	d1,.loop
00004662 43f8f700	lea	(v_levelvariables).w,a1
00004666 7000	moveq	#0,d0
00004668 323c003f	move.w	#.length/4-1,d1
0000466c 22c0	move.l	d0,(a1)+
0000466e 51c9fffc	dbf	d1,.loop
00004672 43f8fe60	lea	(v_timingvariables).w,a1
00004676 7000	moveq	#0,d0
00004678 323c0027	move.w	#.length/4-1,d1
0000467c 22c0	move.l	d0,(a1)+
0000467e 51c9fffc	dbf	d1,.loop
00004682 43f8aa00	lea	(v_ngfx_buffer).w,a1
00004686 7000	moveq	#0,d0
00004688 323c007f	move.w	#.length/4-1,d1
0000468c 22c0	move.l	d0,(a1)+
0000468e 51c9fffc	dbf	d1,.loop
00004692 4238f64e	clr.b	(f_wtr_state).w
00004696 4278fe02	clr.w	(f_restart).w
0000469a 700a	moveq	#palid_Special,d0
0000469c 6100da5e	bsr.w	PalLoad_Fade
000046a0 4eb90001b67c	jsr	(SS_Load).l
000046a6 21fc00000000f700	move.l	#0,(v_screenposx).w
000046ae 21fc00000000f704	move.l	#0,(v_screenposy).w
000046b6 11fc0009d000	move.b	#id_SonicSpecial,(v_player).w
000046bc 610002a4	bsr.w	PalCycle_SS
000046c0 4278f780	clr.w	(v_ssangle).w
000046c4 31fc0040f782	move.w	#$40,(v_ssrotate).w
000046ca 303c0089	move.w	#bgm_SS,d0
000046ce 6100ccc6	bsr.w	QueueSound1
000046d2 31fc0000f790	move.w	#0,(v_btnpushtime1).w
000046d8 43f900004080	lea	(DemoDataPtr).l,a1
000046de 7006	moveq	#6,d0
000046e0 e548	lsl.w	#2,d0
000046e2 22710000	movea.l	(a1,d0.w),a1
000046e6 11e90001f792	move.b	1(a1),(v_btnpushtime2).w
000046ec 5338f792	subq.b	#1,(v_btnpushtime2).w
000046f0 4278fe20	clr.w	(v_rings).w
000046f4 4238fe1b	clr.b	(v_lifecount).w
000046f8 31fc0000fe08	move.w	#0,(v_debuguse).w
000046fe 31fc0708f614	move.w	#1800,(v_generictimer).w
00004704 4a38ffe2	tst.b	(f_debugcheat).w
00004708 670e	beq.s	SS_NoDebug
0000470a 08380006f604	btst	#bitA,(v_jpadhold1).w
00004710 6706	beq.s	SS_NoDebug
00004712 11fc0001fffa	move.b	#1,(f_debugmode).w
00004718 3038f60c	move.w	(v_vdp_buffer1).w,d0
0000471c 00000040	ori.b	#%01000000,d0
00004720 33c000c00004	move.w	d0,(vdp_control_port).l
00004726 6100d7a8	bsr.w	PaletteWhiteIn
0000472a 6100cc7c	bsr.w	PauseGame
0000472e 11fc000af62a	move.b	#id_VBlank_SpecialStage,(v_vblank_routine).w
00004734 6100e272	bsr.w	WaitForVBlank
00004738 6100f896	bsr.w	MoveSonicInDemo
0000473c 31f8f604f602	move.w	(v_jpadhold1).w,(v_jpadhold2).w
00004742 4eb90000d338	jsr	(ExecuteObjects).l
00004748 4eb90000d65e	jsr	(BuildSprites).l
0000474e 4eb90001b14e	jsr	(SS_ShowLayout).l
00004754 6100048e	bsr.w	SS_BGAnimate
00004758 4a78fff0	tst.w	(f_demo).w
0000475c 6708	beq.s	SS_ChkEnd
0000475e 4a78f614	tst.w	(v_generictimer).w
00004762 67000130	beq.w	SS_ToSegaScreen
00004766 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
0000476c 6700ffbc	beq.w	SS_MainLoop
00004770 4a78fff0	tst.w	(f_demo).w
00004774 6600011e	bne.w	SS_ToSegaScreen
00004778 11fc000cf600	move.b	#id_Level,(v_gamemode).w
0000477e 0c780503fe10	cmpi.w	#id_FZ+1,(v_zone).w
00004784 6504	blo.s	SS_Finish
00004786 4278fe10	clr.w	(v_zone).w
0000478a 31fc003cf614	move.w	#60,(v_generictimer).w
00004790 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00004796 4278f794	clr.w	(v_palchgspeed).w
0000479a 11fc0016f62a	move.b	#id_VBlank_Continue,(v_vblank_routine).w
000047a0 6100e206	bsr.w	WaitForVBlank
000047a4 6100f82a	bsr.w	MoveSonicInDemo
000047a8 31f8f604f602	move.w	(v_jpadhold1).w,(v_jpadhold2).w
000047ae 4eb90000d338	jsr	(ExecuteObjects).l
000047b4 4eb90000d65e	jsr	(BuildSprites).l
000047ba 4eb90001b14e	jsr	(SS_ShowLayout).l
000047c0 61000422	bsr.w	SS_BGAnimate
000047c4 5378f794	subq.w	#1,(v_palchgspeed).w
000047c8 6a0a	bpl.s	SS_FinLoop_NoBrighten
000047ca 31fc0002f794	move.w	#2,(v_palchgspeed).w
000047d0 6100d7ca	bsr.w	WhiteOut_ToWhite
000047d4 4a78f614	tst.w	(v_generictimer).w
000047d8 66c0	bne.s	SS_FinLoop
000047da 46fc2700	move.w	#$2700,sr
000047de 4df900c00004	lea	(vdp_control_port).l,a6
000047e4 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
000047e8 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
000047ec 3cbc9001	move.w	#$9001,(a6)
000047f0 6100cad2	bsr.w	ClearScreen
000047f4 23fc7000000200c00004	move.l	#($40000000+(((ArtTile_Title_Card*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Card*tile_size)&$C000)>>14)),(vdp_control_port).l
000047fe 41f900038d5a	lea	(Nem_TitleCard).l,a0
00004804 6100cc3a	bsr.w	NemDec
00004808 4eb90001c822	jsr	(Hud_Base).l
0000480e 46fc2300	move.w	#$2300,sr
00004812 7011	moveq	#palid_SSResult,d0
00004814 6100d902	bsr.w	PalLoad
00004818 7000	moveq	#plcid_Main,d0
0000481a 6100cd96	bsr.w	NewPLC
0000481e 701b	moveq	#plcid_SSResult,d0
00004820 6100cd5e	bsr.w	AddPLC
00004824 11fc0001fe1f	move.b	#1,(f_scorecount).w
0000482a 11fc0001f7d6	move.b	#1,(f_endactbonus).w
00004830 3038fe20	move.w	(v_rings).w,d0
00004834 c0fc000a	mulu.w	#10,d0
00004838 31c0f7d4	move.w	d0,(v_ringbonus).w
0000483c 303c008e	move.w	#bgm_GotThrough,d0
00004840 4eb90000139c	jsr	(QueueSound2).l
00004846 43f8d000	lea	(v_objspace).w,a1
0000484a 7000	moveq	#0,d0
0000484c 323c07ff	move.w	#.length/4-1,d1
00004850 22c0	move.l	d0,(a1)+
00004852 51c9fffc	dbf	d1,.loop
00004856 11fc007ed5c0	move.b	#id_SSResult,(v_ssrescard).w
0000485c 6100cb4a	bsr.w	PauseGame
00004860 11fc000cf62a	move.b	#id_VBlank_TitleCards,(v_vblank_routine).w
00004866 6100e140	bsr.w	WaitForVBlank
0000486a 4eb90000d338	jsr	(ExecuteObjects).l
00004870 4eb90000d65e	jsr	(BuildSprites).l
00004876 6100cd74	bsr.w	RunPLC
0000487a 4a78fe02	tst.w	(f_restart).w
0000487e 67dc	beq.s	SS_NormalExit
00004880 4ab8f680	tst.l	(v_plc_buffer).w
00004884 66d6	bne.s	SS_NormalExit
00004886 303c00ca	move.w	#sfx_EnterSS,d0
0000488a 6100cb10	bsr.w	QueueSound2
0000488e 6100d6ec	bsr.w	PaletteWhiteOut
00004892 4e75	rts	
00004894 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
0000489a 4e75	rts	
0000489c 43f900ff0000	lea	(v_ssbuffer1).l,a1
000048a2 41f90002cf1c	lea	(Eni_SSBg1).l,a0
000048a8 303c4051	move.w	#ArtTile_SS_Background_Fish|Tile_Pal3,d0
000048ac 6100ce70	bsr.w	EniDec
000048b0 263c50000001	move.l	#($40000000+(((ArtTile_SS_Plane_1*tile_size+plane_size_64x32)&$3FFF)<<16)+(((ArtTile_SS_Plane_1*tile_size+plane_size_64x32)&$C000)>>14)),d3
000048b6 45f900ff0080	lea	(v_ssbuffer1+$80).l,a2
000048bc 7e06	moveq	#7-1,d7
000048be 2003	move.l	d3,d0
000048c0 7c03	moveq	#3,d6
000048c2 7800	moveq	#0,d4
000048c4 0c470003	cmpi.w	#4-1,d7
000048c8 6402	bhs.s	loc_48CC
000048ca 7801	moveq	#1,d4
000048cc 7a07	moveq	#8-1,d5
000048ce 224a	movea.l	a2,a1
000048d0 0a040001	eori.b	#1,d4
000048d4 660c	bne.s	loc_48E2
000048d6 0c470006	cmpi.w	#6,d7
000048da 6616	bne.s	loc_48F2
000048dc 43f900ff0000	lea	(v_ssbuffer1).l,a1
000048e2 48e7f800	movem.l	d0-d4,-(sp)
000048e6 7207	moveq	#8-1,d1
000048e8 7407	moveq	#8-1,d2
000048ea 6100cb34	bsr.w	TilemapToVRAM
000048ee 4cdf001f	movem.l	(sp)+,d0-d4
000048f2 068000100000	addi.l	#$100000,d0
000048f8 51cdffd4	dbf	d5,loc_48CE
000048fc 068003800000	addi.l	#$3800000,d0
00004902 0a040001	eori.b	#1,d4
00004906 51ceffc4	dbf	d6,loc_48CC
0000490a 068310000000	addi.l	#$10000000,d3
00004910 6a0a	bpl.s	loc_491C
00004912 4843	swap	d3
00004914 06830000c000	addi.l	#$C000,d3
0000491a 4843	swap	d3
0000491c d4fc0080	adda.w	#$80,a2
00004920 51cfff9c	dbf	d7,loc_48BE
00004924 43f900ff0000	lea	(v_ssbuffer1).l,a1
0000492a 41f90002dce0	lea	(Eni_SSBg2).l,a0
00004930 303c4000	move.w	#ArtTile_SS_Background_Clouds|Tile_Pal3,d0
00004934 6100cde8	bsr.w	EniDec
00004938 43f900ff0000	lea	(v_ssbuffer1).l,a1
0000493e 203c40000003	move.l	#($40000000+(((ArtTile_SS_Plane_5*tile_size)&$3FFF)<<16)+(((ArtTile_SS_Plane_5*tile_size)&$C000)>>14)),d0
00004944 723f	moveq	#(64)-1,d1
00004946 741f	moveq	#(32)-1,d2
00004948 6100cad6	bsr.w	TilemapToVRAM
0000494c 43f900ff0000	lea	(v_ssbuffer1).l,a1
00004952 203c50000003	move.l	#($40000000+(((ArtTile_SS_Plane_5*tile_size+plane_size_64x32)&$3FFF)<<16)+(((ArtTile_SS_Plane_5*tile_size+plane_size_64x32)&$C000)>>14)),d0
00004958 723f	moveq	#(64)-1,d1
0000495a 743f	moveq	#(64)-1,d2
0000495c 6100cac2	bsr.w	TilemapToVRAM
00004960 4e75	rts	
00004962 4a78f63a	tst.w	(f_pause).w
00004966 667e	bne.s	locret_49E6
00004968 5378f79c	subq.w	#1,(v_palss_time).w
0000496c 6a78	bpl.s	locret_49E6
0000496e 4df900c00004	lea	(vdp_control_port).l,a6
00004974 3038f79a	move.w	(v_palss_num).w,d0
00004978 5278f79a	addq.w	#1,(v_palss_num).w
0000497c 0240001f	andi.w	#$1F,d0
00004980 e548	lsl.w	#2,d0
00004982 41f900004a3c	lea	(byte_4A3C).l,a0
00004988 d0c0	adda.w	d0,a0
0000498a 1018	move.b	(a0)+,d0
0000498c 6a04	bpl.s	loc_4992
0000498e 303c01ff	move.w	#$1FF,d0
00004992 31c0f79c	move.w	d0,(v_palss_time).w
00004996 7000	moveq	#0,d0
00004998 1018	move.b	(a0)+,d0
0000499a 31c0f7a0	move.w	d0,(v_ssbganim).w
0000499e 43f900004abc	lea	(byte_4ABC).l,a1
000049a4 43f10000	lea	(a1,d0.w),a1
000049a8 303c8200	move.w	#$8200,d0
000049ac 1019	move.b	(a1)+,d0
000049ae 3c80	move.w	d0,(a6)
000049b0 11d1f616	move.b	(a1),(v_scrposy_vdp).w
000049b4 303c8400	move.w	#$8400,d0
000049b8 1018	move.b	(a0)+,d0
000049ba 3c80	move.w	d0,(a6)
000049bc 23fc4000001000c00004	move.l	#$40000010,(vdp_control_port).l
000049c6 23f8f61600c00000	move.l	(v_scrposy_vdp).w,(vdp_data_port).l
000049ce 7000	moveq	#0,d0
000049d0 1018	move.b	(a0)+,d0
000049d2 6b14	bmi.s	loc_49E8
000049d4 43f900004aca	lea	(Pal_SSCyc1).l,a1
000049da d2c0	adda.w	d0,a1
000049dc 45f8fb4e	lea	(v_palette+$4E).w,a2
000049e0 24d9	move.l	(a1)+,(a2)+
000049e2 24d9	move.l	(a1)+,(a2)+
000049e4 24d9	move.l	(a1)+,(a2)+
000049e6 4e75	rts	
000049e8 3238f79e	move.w	(v_palss_index).w,d1
000049ec 0c40008a	cmpi.w	#$8A,d0
000049f0 6502	blo.s	loc_49F4
000049f2 5241	addq.w	#1,d1
000049f4 c2fc002a	mulu.w	#$2A,d1
000049f8 43f900004b12	lea	(Pal_SSCyc2).l,a1
000049fe d2c1	adda.w	d1,a1
00004a00 0240007f	andi.w	#$7F,d0
00004a04 08800000	bclr	#0,d0
00004a08 670e	beq.s	loc_4A18
00004a0a 45f8fb6e	lea	(v_palette+$6E).w,a2
00004a0e 24d1	move.l	(a1),(a2)+
00004a10 24e90004	move.l	4(a1),(a2)+
00004a14 24e90008	move.l	8(a1),(a2)+
00004a18 d2fc000c	adda.w	#$C,a1
00004a1c 45f8fb5a	lea	(v_palette+$5A).w,a2
00004a20 0c40000a	cmpi.w	#$A,d0
00004a24 6508	blo.s	loc_4A2E
00004a26 0440000a	subi.w	#$A,d0
00004a2a 45f8fb7a	lea	(v_palette+$7A).w,a2
00004a2e 3200	move.w	d0,d1
00004a30 d040	add.w	d0,d0
00004a32 d041	add.w	d1,d0
00004a34 d2c0	adda.w	d0,a1
00004a36 24d9	move.l	(a1)+,(a2)+
00004a38 34d9	move.w	(a1)+,(a2)+
00004a3a 4e75	rts	
00004be4 3038f7a0	move.w	(v_ssbganim).w,d0
00004be8 660c	bne.s	loc_4BF6
00004bea 31fc0000f70c	move.w	#0,(v_bgscreenposy).w
00004bf0 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00004bf6 0c400008	cmpi.w	#8,d0
00004bfa 6452	bhs.s	loc_4C4E
00004bfc 0c400006	cmpi.w	#6,d0
00004c00 660e	bne.s	loc_4C10
00004c02 5278f718	addq.w	#1,(v_bg3screenposx).w
00004c06 5278f70c	addq.w	#1,(v_bgscreenposy).w
00004c0a 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00004c10 7000	moveq	#0,d0
00004c12 3038f708	move.w	(v_bgscreenposx).w,d0
00004c16 4440	neg.w	d0
00004c18 4840	swap	d0
00004c1a 43f900004ccc	lea	(byte_4CCC).l,a1
00004c20 47f8aa00	lea	(v_ngfx_buffer).w,a3
00004c24 7609	moveq	#$A-1,d3
00004c26 302b0002	move.w	2(a3),d0
00004c2a 6100ddae	bsr.w	CalcSine
00004c2e 7400	moveq	#0,d2
00004c30 1419	move.b	(a1)+,d2
00004c32 c1c2	muls.w	d2,d0
00004c34 e080	asr.l	#8,d0
00004c36 36c0	move.w	d0,(a3)+
00004c38 1419	move.b	(a1)+,d2
00004c3a 4882	ext.w	d2
00004c3c d55b	add.w	d2,(a3)+
00004c3e 51cbffe6	dbf	d3,loc_4C26
00004c42 47f8aa00	lea	(v_ngfx_buffer).w,a3
00004c46 45f900004cb8	lea	(byte_4CB8).l,a2
00004c4c 6030	bra.s	loc_4C7E
00004c4e 0c40000c	cmpi.w	#$C,d0
00004c52 6620	bne.s	loc_4C74
00004c54 5378f718	subq.w	#1,(v_bg3screenposx).w
00004c58 47f8ab00	lea	(v_ssscroll_buffer).w,a3
00004c5c 243c00018000	move.l	#$18000,d2
00004c62 7206	moveq	#7-1,d1
00004c64 2013	move.l	(a3),d0
00004c66 9082	sub.l	d2,d0
00004c68 26c0	move.l	d0,(a3)+
00004c6a 048200002000	subi.l	#$2000,d2
00004c70 51c9fff2	dbf	d1,loc_4C64
00004c74 47f8ab00	lea	(v_ssscroll_buffer).w,a3
00004c78 45f900004cc4	lea	(byte_4CC4).l,a2
00004c7e 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00004c82 3038f718	move.w	(v_bg3screenposx).w,d0
00004c86 4440	neg.w	d0
00004c88 4840	swap	d0
00004c8a 7600	moveq	#0,d3
00004c8c 161a	move.b	(a2)+,d3
00004c8e 3438f70c	move.w	(v_bgscreenposy).w,d2
00004c92 4442	neg.w	d2
00004c94 024200ff	andi.w	#$FF,d2
00004c98 e54a	lsl.w	#2,d2
00004c9a 301b	move.w	(a3)+,d0
00004c9c 544b	addq.w	#2,a3
00004c9e 7200	moveq	#0,d1
00004ca0 121a	move.b	(a2)+,d1
00004ca2 5341	subq.w	#1,d1
00004ca4 23802000	move.l	d0,(a1,d2.w)
00004ca8 5842	addq.w	#4,d2
00004caa 024203fc	andi.w	#$3FC,d2
00004cae 51c9fff4	dbf	d1,loc_4CA4
00004cb2 51cbffe6	dbf	d3,loc_4C9A
00004cb6 4e75	rts	
00004ce0 6100d170	bsr.w	PaletteFadeOut
00004ce4 46fc2700	move.w	#$2700,sr
00004ce8 3038f60c	move.w	(v_vdp_buffer1).w,d0
00004cec 020000bf	andi.b	#%10111111,d0
00004cf0 33c000c00004	move.w	d0,(vdp_control_port).l
00004cf6 4df900c00004	lea	(vdp_control_port).l,a6
00004cfc 3cbc8004	move.w	#$8004,(a6)
00004d00 3cbc8700	move.w	#$8700,(a6)
00004d04 6100c5be	bsr.w	ClearScreen
00004d08 43f8d000	lea	(v_objspace).w,a1
00004d0c 7000	moveq	#0,d0
00004d0e 323c07ff	move.w	#.length/4-1,d1
00004d12 22c0	move.l	d0,(a1)+
00004d14 51c9fffc	dbf	d1,.loop
00004d18 23fc7000000200c00004	move.l	#($40000000+(((ArtTile_Title_Card*tile_size)&$3FFF)<<16)+(((ArtTile_Title_Card*tile_size)&$C000)>>14)),(vdp_control_port).l
00004d22 41f900038d5a	lea	(Nem_TitleCard).l,a0
00004d28 6100c716	bsr.w	NemDec
00004d2c 23fc6000000200c00004	move.l	#($40000000+(((ArtTile_Continue_Sonic*tile_size)&$3FFF)<<16)+(((ArtTile_Continue_Sonic*tile_size)&$C000)>>14)),(vdp_control_port).l
00004d36 41f90003aef0	lea	(Nem_ContSonic).l,a0
00004d3c 6100c702	bsr.w	NemDec
00004d40 23fc6a20000200c00004	move.l	#($40000000+(((ArtTile_Mini_Sonic*tile_size)&$3FFF)<<16)+(((ArtTile_Mini_Sonic*tile_size)&$C000)>>14)),(vdp_control_port).l
00004d4a 41f90003b1a0	lea	(Nem_MiniSonic).l,a0
00004d50 6100c6ee	bsr.w	NemDec
00004d54 720a	moveq	#10,d1
00004d56 4eb90001c938	jsr	(ContScrCounter).l
00004d5c 7012	moveq	#palid_Continue,d0
00004d5e 6100d39c	bsr.w	PalLoad_Fade
00004d62 103c0090	move.b	#bgm_Continue,d0
00004d66 6100c62e	bsr.w	QueueSound1
00004d6a 31fc0293f614	move.w	#659,(v_generictimer).w
00004d70 42b8f700	clr.l	(v_screenposx).w
00004d74 21fc01000000f704	move.l	#$1000000,(v_screenposy).w
00004d7c 11fc0081d000	move.b	#id_ContSonic,(v_player).w
00004d82 11fc0080d040	move.b	#id_ContScrItem,(v_continuetext).w
00004d88 11fc0080d080	move.b	#id_ContScrItem,(v_continuelight).w
00004d8e 11fc0003d098	move.b	#3,(v_continuelight+obPriority).w
00004d94 11fc0004d09a	move.b	#4,(v_continuelight+obFrame).w
00004d9a 11fc0080d0c0	move.b	#id_ContScrItem,(v_continueicon).w
00004da0 11fc0004d0e4	move.b	#4,(v_continueicon+obRoutine).w
00004da6 4eb90000d338	jsr	(ExecuteObjects).l
00004dac 4eb90000d65e	jsr	(BuildSprites).l
00004db2 3038f60c	move.w	(v_vdp_buffer1).w,d0
00004db6 00000040	ori.b	#%01000000,d0
00004dba 33c000c00004	move.w	d0,(vdp_control_port).l
00004dc0 6100cfea	bsr.w	PaletteFadeIn
00004dc4 11fc0016f62a	move.b	#id_VBlank_Continue,(v_vblank_routine).w
00004dca 6100dbdc	bsr.w	WaitForVBlank
00004dce 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00004dd4 641c	bhs.s	Cont_NoCountdown
00004dd6 46fc2700	move.w	#$2700,sr
00004dda 3238f614	move.w	(v_generictimer).w,d1
00004dde 82fc003c	divu.w	#60,d1
00004de2 02810000000f	andi.l	#$F,d1
00004de8 4eb90001c938	jsr	(ContScrCounter).l
00004dee 46fc2300	move.w	#$2300,sr
00004df2 4eb90000d338	jsr	(ExecuteObjects).l
00004df8 4eb90000d65e	jsr	(BuildSprites).l
00004dfe 0c780180d008	cmpi.w	#320+64,(v_player+obX).w
00004e04 6418	bhs.s	Cont_GotoLevel
00004e06 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00004e0c 64b6	bhs.s	Cont_MainLoop
00004e0e 4a78f614	tst.w	(v_generictimer).w
00004e12 6600ffb0	bne.w	Cont_MainLoop
00004e16 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
00004e1c 4e75	rts	
00004e1e 11fc000cf600	move.b	#id_Level,(v_gamemode).w
00004e24 11fc0003fe12	move.b	#3,(v_lives).w
00004e2a 7000	moveq	#0,d0
00004e2c 31c0fe20	move.w	d0,(v_rings).w
00004e30 21c0fe22	move.l	d0,(v_time).w
00004e34 21c0fe26	move.l	d0,(v_score).w
00004e38 11c0fe30	move.b	d0,(v_lastlamp).w
00004e3c 5338fe18	subq.b	#1,(v_continues).w
00004e40 4e75	rts	
00004e42 7000	moveq	#0,d0
00004e44 10280024	move.b	obRoutine(a0),d0
00004e48 323b0006	move.w	CSI_Index(pc,d0.w),d1
00004e4c 4efb1002	jmp	CSI_Index(pc,d1.w)
00004e58 54280024	addq.b	#2,obRoutine(a0)
00004e5c 217c000050560004	move.l	#Map_ContScr,obMap(a0)
00004e64 317c85000002	move.w	#ArtTile_Continue_Sonic|Tile_Prio,obGfx(a0)
00004e6a 117c00000001	move.b	#0,obRender(a0)
00004e70 117c003c0019	move.b	#$3C,obActWid(a0)
00004e76 317c01200008	move.w	#$120,obX(a0)
00004e7c 317c00c0000a	move.w	#$C0,obScreenY(a0)
00004e82 31fc0000fe20	move.w	#0,(v_rings).w
00004e88 4ef90000d604	jmp	(DisplaySprite).l
00004eac 2248	movea.l	a0,a1
00004eae 45f900004e8e	lea	(CSI_MiniSonicPos).l,a2
00004eb4 7200	moveq	#0,d1
00004eb6 1238fe18	move.b	(v_continues).w,d1
00004eba 5501	subq.b	#2,d1
00004ebc 6406	bcc.s	CSI_MoreThan1
00004ebe 4ef90000d640	jmp	(DeleteObject).l
00004ec4 7601	moveq	#1,d3
00004ec6 0c01000e	cmpi.b	#14,d1
00004eca 6504	blo.s	CSI_FewerThan16
00004ecc 7600	moveq	#0,d3
00004ece 720e	moveq	#14,d1
00004ed0 1401	move.b	d1,d2
00004ed2 02020001	andi.b	#1,d2
00004edc 335a0008	move.w	(a2)+,obX(a1)
00004ee0 4a02	tst.b	d2
00004ee2 6706	beq.s	CSI_Even
00004ee4 0469000a0008	subi.w	#$A,obX(a1)
00004eea 337c00d0000a	move.w	#$D0,obScreenY(a1)
00004ef0 137c0006001a	move.b	#6,obFrame(a1)
00004ef6 137c00060024	move.b	#6,obRoutine(a1)
00004efc 237c000050560004	move.l	#Map_ContScr,obMap(a1)
00004f04 337c85510002	move.w	#ArtTile_Mini_Sonic|Tile_Prio,obGfx(a1)
00004f0a 137c00000001	move.b	#0,obRender(a1)
00004f10 43e90040	lea	object_size(a1),a1
00004f14 51c9ffc0	dbf	d1,CSI_MiniSonicLoop
00004f18 43e9ffc0	lea	-object_size(a1),a1
00004f1c 13430028	move.b	d3,obSubtype(a1)
00004f20 4a280028	tst.b	obSubtype(a0)
00004f24 671a	beq.s	CSI_Animate
00004f26 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00004f2c 6512	blo.s	CSI_Animate
00004f2e 1038fe0f	move.b	(v_vblank_byte).w,d0
00004f32 02000001	andi.b	#1,d0
00004f36 6608	bne.s	CSI_Animate
00004f38 4a78d010	tst.w	(v_player+obVelX).w
00004f3c 6618	bne.s	CSI_Delete
00004f3e 4e75	rts	
00004f40 1038fe0f	move.b	(v_vblank_byte).w,d0
00004f44 0200000f	andi.b	#$F,d0
00004f48 6606	bne.s	CSI_Display2
00004f4a 08680000001a	bchg	#0,obFrame(a0)
00004f50 4ef90000d604	jmp	(DisplaySprite).l
00004f56 4ef90000d640	jmp	(DeleteObject).l
00004f5c 7000	moveq	#0,d0
00004f5e 10280024	move.b	obRoutine(a0),d0
00004f62 323b000c	move.w	CSon_Index(pc,d0.w),d1
00004f66 4ebb1008	jsr	CSon_Index(pc,d1.w)
00004f6a 4ef90000d604	jmp	(DisplaySprite).l
00004f78 54280024	addq.b	#2,obRoutine(a0)
00004f7c 317c00a00008	move.w	#$A0,obX(a0)
00004f82 317c00c0000c	move.w	#$C0,obY(a0)
00004f88 217c000211e20004	move.l	#Map_Sonic,obMap(a0)
00004f90 317c07800002	move.w	#ArtTile_Sonic,obGfx(a0)
00004f96 117c00040001	move.b	#4,obRender(a0)
00004f9c 117c00020018	move.b	#2,obPriority(a0)
00004fa2 117c001d001c	move.b	#id_Float3,obAnim(a0)
00004fa8 317c04000012	move.w	#$400,obVelY(a0)
00004fae 0c6801a0000c	cmpi.w	#$1A0,obY(a0)
00004fb4 661e	bne.s	CSon_ShowFall
00004fb6 54280024	addq.b	#2,obRoutine(a0)
00004fba 42680012	clr.w	obVelY(a0)
00004fbe 217c000050560004	move.l	#Map_ContScr,obMap(a0)
00004fc6 317c85000002	move.w	#ArtTile_Continue_Sonic|Tile_Prio,obGfx(a0)
00004fcc 117c0000001c	move.b	#id_Walk,obAnim(a0)
00004fd2 6012	bra.s	CSon_Animate
00004fd4 4eb90000d5de	jsr	(SpeedToPos).l
00004fda 4eb9000139c4	jsr	(Sonic_Animate).l
00004fe0 4ef900013c3e	jmp	(Sonic_LoadGfx).l
00004fe6 4a38f605	tst.b	(v_jpadpress1).w
00004fea 6b0c	bmi.s	CSon_GetUp
00004fec 43f900005048	lea	(Ani_CSon).l,a1
00004ff2 4ef90000a718	jmp	(AnimateSprite).l
00004ff8 54280024	addq.b	#2,obRoutine(a0)
00004ffc 217c000211e20004	move.l	#Map_Sonic,obMap(a0)
00005004 317c07800002	move.w	#ArtTile_Sonic,obGfx(a0)
0000500a 117c001e001c	move.b	#id_Float4,obAnim(a0)
00005010 42680014	clr.w	obInertia(a0)
00005014 5168000c	subq.w	#8,obY(a0)
00005018 103c00e0	move.b	#bgm_Fade,d0
0000501c 6100c37e	bsr.w	QueueSound2
00005020 0c6808000014	cmpi.w	#$800,obInertia(a0)
00005026 6608	bne.s	CSon_AddInertia
00005028 317c10000010	move.w	#$1000,obVelX(a0)
0000502e 6006	bra.s	CSon_ShowRun
00005030 066800200014	addi.w	#$20,obInertia(a0)
00005036 4eb90000d5de	jsr	(SpeedToPos).l
0000503c 4eb9000139c4	jsr	(Sonic_Animate).l
00005042 4ef900013c3e	jmp	(Sonic_LoadGfx).l
000050e6 103c00e4	move.b	#bgm_Stop,d0
000050ea 6100c2b0	bsr.w	QueueSound2
000050ee 6100cd62	bsr.w	PaletteFadeOut
000050f2 43f8d000	lea	(v_objspace).w,a1
000050f6 7000	moveq	#0,d0
000050f8 323c07ff	move.w	#.length/4-1,d1
000050fc 22c0	move.l	d0,(a1)+
000050fe 51c9fffc	dbf	d1,.loop
00005102 43f8f628	lea	(v_misc_variables).w,a1
00005106 7000	moveq	#0,d0
00005108 323c0015	move.w	#.length/4-1,d1
0000510c 22c0	move.l	d0,(a1)+
0000510e 51c9fffc	dbf	d1,.loop
00005112 43f8f700	lea	(v_levelvariables).w,a1
00005116 7000	moveq	#0,d0
00005118 323c003f	move.w	#.length/4-1,d1
0000511c 22c0	move.l	d0,(a1)+
0000511e 51c9fffc	dbf	d1,.loop
00005122 43f8fe60	lea	(v_timingandscreenvariables).w,a1
00005126 7000	moveq	#0,d0
00005128 323c0047	move.w	#.length/4-1,d1
0000512c 22c0	move.l	d0,(a1)+
0000512e 51c9fffc	dbf	d1,.loop
00005132 46fc2700	move.w	#$2700,sr
00005136 3038f60c	move.w	(v_vdp_buffer1).w,d0
0000513a 020000bf	andi.b	#%10111111,d0
0000513e 33c000c00004	move.w	d0,(vdp_control_port).l
00005144 6100c17e	bsr.w	ClearScreen
00005148 4df900c00004	lea	(vdp_control_port).l,a6
0000514e 3cbc8b03	move.w	#$8B03,(a6)
00005152 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
00005156 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
0000515a 3cbc857c	move.w	#$8500+(vram_sprites>>9),(a6)
0000515e 3cbc9001	move.w	#$9001,(a6)
00005162 3cbc8004	move.w	#$8004,(a6)
00005166 3cbc8720	move.w	#$8720,(a6)
0000516a 31fc8adff624	move.w	#$8A00+223,(v_hblank_hreg).w
00005170 3cb8f624	move.w	(v_hblank_hreg).w,(a6)
00005174 31fc001efe14	move.w	#30,(v_air).w
0000517a 31fc0600fe10	move.w	#id_EndZ_good,(v_zone).w
00005180 0c380006fe57	cmpi.b	#6,(v_emeralds).w
00005186 6706	beq.s	End_LoadData
00005188 31fc0601fe10	move.w	#id_EndZ_bad,(v_zone).w
0000518e 701c	moveq	#plcid_Ending,d0
00005190 6100c55a	bsr.w	QuickPLC
00005194 4eb90001c822	jsr	(Hud_Base).l
0000519a 61000d22	bsr.w	LevelSizeLoad
0000519e 610010e6	bsr.w	DeformLayers
000051a2 08f80002f754	bset	#2,(v_fg_scroll_flags).w
000051a8 61001afc	bsr.w	LevelDataLoad
000051ac 61001aaa	bsr.w	LoadTilesFromStart
000051b0 21fc00064a00f796	move.l	#Col_GHZ,(v_collindex).w
000051b8 46fc2300	move.w	#$2300,sr
000051bc 41f90006175e	lea	(Kos_EndFlowers).l,a0
000051c2 43f89400	lea	(v_256x256_def+$4A*chunk_size).w,a1
000051c6 6100c6d4	bsr.w	KosDec
000051ca 7003	moveq	#palid_Sonic,d0
000051cc 6100cf2e	bsr.w	PalLoad_Fade
000051d0 303c008b	move.w	#bgm_Ending,d0
000051d4 6100c1c0	bsr.w	QueueSound1
000051d8 08380006f604	btst	#bitA,(v_jpadhold1).w
000051de 6706	beq.s	End_LoadSonic
000051e0 11fc0001fffa	move.b	#1,(f_debugmode).w
000051e6 11fc0001d000	move.b	#id_SonicPlayer,(v_player).w
000051ec 08f80000d022	bset	#0,(v_player+obStatus).w
000051f2 11fc0001f7cc	move.b	#1,(f_lockctrl).w
000051f8 31fc0400f602	move.w	#(btnL<<8),(v_jpadhold2).w
000051fe 31fcf800d014	move.w	#-$800,(v_player+obInertia).w
00005204 11fc0021d040	move.b	#id_HUD,(v_hud).w
0000520a 4eb90000d8da	jsr	(ObjPosLoad).l
00005210 4eb90000d338	jsr	(ExecuteObjects).l
00005216 4eb90000d65e	jsr	(BuildSprites).l
0000521c 7000	moveq	#0,d0
0000521e 31c0fe20	move.w	d0,(v_rings).w
00005222 21c0fe22	move.l	d0,(v_time).w
00005226 11c0fe1b	move.b	d0,(v_lifecount).w
0000522a 11c0fe2c	move.b	d0,(v_shield).w
0000522e 11c0fe2d	move.b	d0,(v_invinc).w
00005232 11c0fe2e	move.b	d0,(v_shoes).w
00005236 11c0fe2f	move.b	d0,(v_unused1).w
0000523a 31c0fe08	move.w	d0,(v_debuguse).w
0000523e 31c0fe02	move.w	d0,(f_restart).w
00005242 31c0fe04	move.w	d0,(v_framecount).w
00005246 6100eed0	bsr.w	OscillateNumInit
0000524a 11fc0001fe1f	move.b	#1,(f_scorecount).w
00005250 11fc0001fe1d	move.b	#1,(f_ringcount).w
00005256 11fc0000fe1e	move.b	#0,(f_timecount).w
0000525c 31fc0708f614	move.w	#1800,(v_generictimer).w
00005262 11fc0018f62a	move.b	#id_VBlank_Ending,(v_vblank_routine).w
00005268 6100d73e	bsr.w	WaitForVBlank
0000526c 3038f60c	move.w	(v_vdp_buffer1).w,d0
00005270 00000040	ori.b	#%01000000,d0
00005274 33c000c00004	move.w	d0,(vdp_control_port).l
0000527a 31fc003ff626	move.w	#$003F,(v_pfade_start).w
00005280 6100cb2a	bsr.w	PaletteFadeIn
00005284 6100c122	bsr.w	PauseGame
00005288 11fc0018f62a	move.b	#id_VBlank_Ending,(v_vblank_routine).w
0000528e 6100d718	bsr.w	WaitForVBlank
00005292 5278fe04	addq.w	#1,(v_framecount).w
00005296 610000d8	bsr.w	End_MoveSonic
0000529a 4eb90000d338	jsr	(ExecuteObjects).l
000052a0 61000fe4	bsr.w	DeformLayers
000052a4 4eb90000d65e	jsr	(BuildSprites).l
000052aa 4eb90000d8da	jsr	(ObjPosLoad).l
000052b0 6100c68a	bsr.w	PaletteCycle
000052b4 6100eeb8	bsr.w	OscillateNumDo
000052b8 6100ef4c	bsr.w	SynchroAnimate
000052bc 0c380018f600	cmpi.b	#id_Ending,(v_gamemode).w
000052c2 6716	beq.s	End_ChkEmerald
000052c4 11fc001cf600	move.b	#id_Credits,(v_gamemode).w
000052ca 103c0091	move.b	#bgm_Credits,d0
000052ce 6100c0cc	bsr.w	QueueSound2
000052d2 31fc0000fff4	move.w	#0,(v_creditsnum).w
000052d8 4e75	rts	
000052da 4a78fe02	tst.w	(f_restart).w
000052de 6700ffa4	beq.w	End_MainLoop
000052e2 4278fe02	clr.w	(f_restart).w
000052e6 31fc003ff626	move.w	#$003F,(v_pfade_start).w
000052ec 4278f794	clr.w	(v_palchgspeed).w
000052f0 6100c0b6	bsr.w	PauseGame
000052f4 11fc0018f62a	move.b	#id_VBlank_Ending,(v_vblank_routine).w
000052fa 6100d6ac	bsr.w	WaitForVBlank
000052fe 5278fe04	addq.w	#1,(v_framecount).w
00005302 6100006c	bsr.w	End_MoveSonic
00005306 4eb90000d338	jsr	(ExecuteObjects).l
0000530c 61000f78	bsr.w	DeformLayers
00005310 4eb90000d65e	jsr	(BuildSprites).l
00005316 4eb90000d8da	jsr	(ObjPosLoad).l
0000531c 6100ee50	bsr.w	OscillateNumDo
00005320 6100eee4	bsr.w	SynchroAnimate
00005324 5378f794	subq.w	#1,(v_palchgspeed).w
00005328 6a0a	bpl.s	End_SlowFade
0000532a 31fc0002f794	move.w	#2,(v_palchgspeed).w
00005330 6100cc6a	bsr.w	WhiteOut_ToWhite
00005334 4a78fe02	tst.w	(f_restart).w
00005338 6700ffb6	beq.w	End_AllEmlds
0000533c 4278fe02	clr.w	(f_restart).w
00005340 31fc2e2fa480	move.w	#$2E2F,(v_lvllayout_fg+layout_row).w
00005346 4bf900c00004	lea	(vdp_control_port).l,a5
0000534c 4df900c00000	lea	(vdp_data_port).l,a6
00005352 47f8f700	lea	(v_screenposx).w,a3
00005356 49f8a400	lea	(v_lvllayout_fg).w,a4
0000535a 343c4000	move.w	#$4000,d2
0000535e 6100191e	bsr.w	DrawChunks
00005362 7013	moveq	#palid_Ending,d0
00005364 6100cd96	bsr.w	PalLoad_Fade
00005368 6100cb66	bsr.w	PaletteWhiteIn
0000536c 6000ff16	bra.w	End_MainLoop
00005370 1038f7d7	move.b	(v_sonicend).w,d0
00005374 661a	bne.s	End_MoveSon2
00005376 0c780090d008	cmpi.w	#$90,(v_player+obX).w
0000537c 6462	bhs.s	End_MoveSonExit
0000537e 5438f7d7	addq.b	#2,(v_sonicend).w
00005382 11fc0001f7cc	move.b	#1,(f_lockctrl).w
00005388 31fc0800f602	move.w	#(btnR<<8),(v_jpadhold2).w
0000538e 4e75	rts	
00005390 5500	subq.b	#2,d0
00005392 6634	bne.s	End_MoveSon3
00005394 0c7800a0d008	cmpi.w	#$A0,(v_player+obX).w
0000539a 6544	blo.s	End_MoveSonExit
0000539c 5438f7d7	addq.b	#2,(v_sonicend).w
000053a0 7000	moveq	#0,d0
000053a2 11c0f7cc	move.b	d0,(f_lockctrl).w
000053a6 31c0f602	move.w	d0,(v_jpadhold2).w
000053aa 31c0d014	move.w	d0,(v_player+obInertia).w
000053ae 11fc0081f7c8	move.b	#$81,(f_playerctrl).w
000053b4 11fc0003d01a	move.b	#fr_Wait2,(v_player+obFrame).w
000053ba 31fc0505d01c	move.w	#(id_Wait<<8)+id_Wait,(v_player+obAnim).w
000053c0 11fc0003d01e	move.b	#3,(v_player+obTimeFrame).w
000053c6 4e75	rts	
000053c8 5500	subq.b	#2,d0
000053ca 6614	bne.s	End_MoveSonExit
000053cc 5438f7d7	addq.b	#2,(v_sonicend).w
000053d0 31fc00a0d008	move.w	#$A0,(v_player+obX).w
000053d6 11fc0087d000	move.b	#id_EndSonic,(v_player).w
000053dc 4278d024	clr.w	(v_player+obRoutine).w
000053e0 4e75	rts	
000053e2 7000	moveq	#0,d0
000053e4 10280025	move.b	ob2ndRout(a0),d0
000053e8 323b000c	move.w	ESon_Index(pc,d0.w),d1
000053ec 4ebb1008	jsr	ESon_Index(pc,d1.w)
000053f0 4ef90000d604	jmp	(DisplaySprite).l
0000540a 0c380006fe57	cmpi.b	#6,(v_emeralds).w
00005410 670e	beq.s	ESon_Main2
00005412 062800100025	addi.b	#$10,ob2ndRout(a0)
00005418 317c00d80030	move.w	#216,eson_time(a0)
0000541e 4e75	rts	
00005420 54280025	addq.b	#2,ob2ndRout(a0)
00005424 217c000056800004	move.l	#Map_ESon,obMap(a0)
0000542c 317c03e10002	move.w	#ArtTile_Ending_Sonic,obGfx(a0)
00005432 117c00040001	move.b	#4,obRender(a0)
00005438 42280022	clr.b	obStatus(a0)
0000543c 117c00020018	move.b	#2,obPriority(a0)
00005442 117c0000001a	move.b	#0,obFrame(a0)
00005448 317c00500030	move.w	#80,eson_time(a0)
0000544e 53680030	subq.w	#1,eson_time(a0)
00005452 6610	bne.s	ESon_Wait
00005454 54280025	addq.b	#2,ob2ndRout(a0)
00005458 317c0001001c	move.w	#1,obAnim(a0)
0000545e 11fc0088d400	move.b	#id_EndChaos,(v_endemeralds).w
00005464 4e75	rts	
00005466 0c79200000ffd43c	cmpi.w	#$2000,((v_endemeralds+echa_radius)&$FFFFFF).l
0000546e 6610	bne.s	locret_5480
00005470 31fc0001fe02	move.w	#1,(f_restart).w
00005476 317c005a0030	move.w	#90,eson_time(a0)
0000547c 54280025	addq.b	#2,ob2ndRout(a0)
00005480 4e75	rts	
00005482 53680030	subq.w	#1,eson_time(a0)
00005486 6624	bne.s	ESon_Wait2
00005488 43f8d400	lea	(v_endemeralds).w,a1
0000548c 323c00ff	move.w	#(v_endemeralds_end-v_endemeralds)/4-1,d1
00005490 4299	clr.l	(a1)+
00005492 51c9fffc	dbf	d1,ESon_ClrLoop
00005496 31fc0001fe02	move.w	#1,(f_restart).w
0000549c 54280025	addq.b	#2,ob2ndRout(a0)
000054a0 117c0001001c	move.b	#1,obAnim(a0)
000054a6 317c003c0030	move.w	#60,eson_time(a0)
000054ac 4e75	rts	
000054ae 53680030	subq.w	#1,eson_time(a0)
000054b2 6616	bne.s	ESon_Wait3
000054b4 54280025	addq.b	#2,ob2ndRout(a0)
000054b8 317c00b40030	move.w	#180,eson_time(a0)
000054be 117c0002001c	move.b	#2,obAnim(a0)
000054c4 11fc0089d400	move.b	#id_EndSTH,(v_endlogo).w
000054ca 4e75	rts	
000054cc 43f900005516	lea	(Ani_ESon).l,a1
000054d2 4ef90000a718	jmp	(AnimateSprite).l
000054d8 53680030	subq.w	#1,eson_time(a0)
000054dc 6636	bne.s	ESon_Wait4
000054de 54280025	addq.b	#2,ob2ndRout(a0)
000054e2 217c000056800004	move.l	#Map_ESon,obMap(a0)
000054ea 317c03e10002	move.w	#ArtTile_Ending_Sonic,obGfx(a0)
000054f0 117c00040001	move.b	#4,obRender(a0)
000054f6 42280022	clr.b	obStatus(a0)
000054fa 117c00020018	move.b	#2,obPriority(a0)
00005500 117c0005001a	move.b	#5,obFrame(a0)
00005506 117c0002001c	move.b	#2,obAnim(a0)
0000550c 11fc0089d400	move.b	#id_EndSTH,(v_endlogo).w
00005512 60b8	bra.s	ESon_Animate
00005514 4e75	rts	
0000553c 7000	moveq	#0,d0
0000553e 10280024	move.b	obRoutine(a0),d0
00005542 323b000c	move.w	ECha_Index(pc,d0.w),d1
00005546 4ebb1008	jsr	ECha_Index(pc,d1.w)
0000554a 4ef90000d604	jmp	(DisplaySprite).l
00005554 0c380002d01a	cmpi.b	#2,(v_player+obFrame).w
0000555a 6704	beq.s	ECha_CreateEms
0000555c 588f	addq.l	#4,sp
0000555e 4e75	rts	
00005560 3178d0080008	move.w	(v_player+obX).w,obX(a0)
00005566 3178d00c000c	move.w	(v_player+obY).w,obY(a0)
0000556c 2248	movea.l	a0,a1
0000556e 7600	moveq	#0,d3
00005570 7401	moveq	#1,d2
00005572 7205	moveq	#5,d1
00005574 12bc0088	move.b	#id_EndChaos,obID(a1)
00005578 54290024	addq.b	#2,obRoutine(a1)
0000557c 237c0000577a0004	move.l	#Map_ECha,obMap(a1)
00005584 337c03c50002	move.w	#ArtTile_Ending_Emeralds,obGfx(a1)
0000558a 137c00040001	move.b	#4,obRender(a1)
00005590 137c00010018	move.b	#1,obPriority(a1)
00005596 336800080038	move.w	obX(a0),echa_origX(a1)
0000559c 3368000c003a	move.w	obY(a0),echa_origY(a1)
000055a2 1342001c	move.b	d2,obAnim(a1)
000055a6 1342001a	move.b	d2,obFrame(a1)
000055aa 5202	addq.b	#1,d2
000055ac 13430026	move.b	d3,obAngle(a1)
000055b0 0603002a	addi.b	#$100/6,d3
000055b4 43e90040	lea	object_size(a1),a1
000055b8 51c9ffba	dbf	d1,ECha_LoadLoop
000055bc 3028003e	move.w	echa_angle(a0),d0
000055c0 d1680026	add.w	d0,obAngle(a0)
000055c4 10280026	move.b	obAngle(a0),d0
000055c8 4eb9000029da	jsr	(CalcSine).l
000055ce 7800	moveq	#0,d4
000055d0 1828003c	move.b	echa_radius(a0),d4
000055d4 c3c4	muls.w	d4,d1
000055d6 e081	asr.l	#8,d1
000055d8 c1c4	muls.w	d4,d0
000055da e080	asr.l	#8,d0
000055dc d2680038	add.w	echa_origX(a0),d1
000055e0 d068003a	add.w	echa_origY(a0),d0
000055e4 31410008	move.w	d1,obX(a0)
000055e8 3140000c	move.w	d0,obY(a0)
000055ec 0c682000003c	cmpi.w	#$2000,echa_radius(a0)
000055f2 6706	beq.s	ECha_Rotate
000055f4 06680020003c	addi.w	#$20,echa_radius(a0)
000055fa 0c682000003e	cmpi.w	#$2000,echa_angle(a0)
00005600 6706	beq.s	ECha_Rise
00005602 06680020003e	addi.w	#$20,echa_angle(a0)
00005608 0c680140003a	cmpi.w	#$140,echa_origY(a0)
0000560e 6704	beq.s	ECha_End
00005610 5368003a	subq.w	#1,echa_origY(a0)
00005614 4e75	rts	
00005616 7000	moveq	#0,d0
00005618 10280024	move.b	obRoutine(a0),d0
0000561c 323b0006	move.w	ESth_Index(pc,d0.w),d1
00005620 4efb1002	jmp	ESth_Index(pc,d1.w)
0000562a 54280024	addq.b	#2,obRoutine(a0)
0000562e 317cffe00008	move.w	#-$20,obX(a0)
00005634 317c00d8000a	move.w	#$D8,obScreenY(a0)
0000563a 217c000057b20004	move.l	#Map_ESth,obMap(a0)
00005642 317c05c50002	move.w	#ArtTile_Ending_STH,obGfx(a0)
00005648 117c00000001	move.b	#0,obRender(a0)
0000564e 117c00000018	move.b	#0,obPriority(a0)
00005654 0c6800c00008	cmpi.w	#$C0,obX(a0)
0000565a 670a	beq.s	ESth_Delay
0000565c 066800100008	addi.w	#$10,obX(a0)
00005662 60007fa0	bra.w	DisplaySprite
00005666 54280024	addq.b	#2,obRoutine(a0)
0000566a 317c00780030	move.w	#120,esth_time(a0)
00005670 53680030	subq.w	#1,esth_time(a0)
00005674 6a06	bpl.s	ESth_Wait
00005676 11fc001cf600	move.b	#id_Credits,(v_gamemode).w
0000567c 60007f86	bra.w	DisplaySprite
000057c4 6100be18	bsr.w	ClearPLC
000057c8 6100c688	bsr.w	PaletteFadeOut
000057cc 4df900c00004	lea	(vdp_control_port).l,a6
000057d2 3cbc8004	move.w	#$8004,(a6)
000057d6 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
000057da 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
000057de 3cbc9001	move.w	#$9001,(a6)
000057e2 3cbc9200	move.w	#$9200,(a6)
000057e6 3cbc8b03	move.w	#$8B03,(a6)
000057ea 3cbc8720	move.w	#$8720,(a6)
000057ee 4238f64e	clr.b	(f_wtr_state).w
000057f2 6100bad0	bsr.w	ClearScreen
000057f6 43f8d000	lea	(v_objspace).w,a1
000057fa 7000	moveq	#0,d0
000057fc 323c07ff	move.w	#.length/4-1,d1
00005800 22c0	move.l	d0,(a1)+
00005802 51c9fffc	dbf	d1,.loop
00005806 23fc7400000200c00004	move.l	#($40000000+(((ArtTile_Credits_Font*tile_size)&$3FFF)<<16)+(((ArtTile_Credits_Font*tile_size)&$C000)>>14)),(vdp_control_port).l
00005810 41f900061f76	lea	(Nem_CreditText).l,a0
00005816 6100bc28	bsr.w	NemDec
0000581a 43f8fb80	lea	(v_palette_fading).w,a1
0000581e 7000	moveq	#0,d0
00005820 323c001f	move.w	#.length/4-1,d1
00005824 22c0	move.l	d0,(a1)+
00005826 51c9fffc	dbf	d1,.loop
0000582a 7003	moveq	#palid_Sonic,d0
0000582c 6100c8ce	bsr.w	PalLoad_Fade
00005830 11fc008ad080	move.b	#id_CreditsText,(v_credits).w
00005836 4eb90000d338	jsr	(ExecuteObjects).l
0000583c 4eb90000d65e	jsr	(BuildSprites).l
00005842 61000054	bsr.w	EndingDemoLoad
00005846 7000	moveq	#0,d0
00005848 1038fe10	move.b	(v_zone).w,d0
0000584c e948	lsl.w	#4,d0
0000584e 45f90001d5a2	lea	(LevelHeaders).l,a2
00005854 45f20000	lea	(a2,d0.w),a2
00005858 7000	moveq	#0,d0
0000585a 1012	move.b	(a2),d0
0000585c 6704	beq.s	Cred_SkipObjGfx
0000585e 6100bd20	bsr.w	AddPLC
00005862 7001	moveq	#plcid_Main2,d0
00005864 6100bd1a	bsr.w	AddPLC
00005868 31fc0078f614	move.w	#120,(v_generictimer).w
0000586e 6100c53c	bsr.w	PaletteFadeIn
00005872 11fc0004f62a	move.b	#id_VBlank_Title,(v_vblank_routine).w
00005878 6100d12e	bsr.w	WaitForVBlank
0000587c 6100bd6e	bsr.w	RunPLC
00005880 4a78f614	tst.w	(v_generictimer).w
00005884 66ec	bne.s	Cred_WaitLoop
00005886 4ab8f680	tst.l	(v_plc_buffer).w
0000588a 66e6	bne.s	Cred_WaitLoop
0000588c 0c780009fff4	cmpi.w	#9,(v_creditsnum).w
00005892 67000098	beq.w	TryAgainEnd
00005896 4e75	rts	
00005898 3038fff4	move.w	(v_creditsnum).w,d0
0000589c 0240000f	andi.w	#$F,d0
000058a0 d040	add.w	d0,d0
000058a2 303b0054	move.w	EndDemo_Levels(pc,d0.w),d0
000058a6 31c0fe10	move.w	d0,(v_zone).w
000058aa 5278fff4	addq.w	#1,(v_creditsnum).w
000058ae 0c780009fff4	cmpi.w	#9,(v_creditsnum).w
000058b4 6440	bhs.s	EndDemo_Exit
000058b6 31fc8001fff0	move.w	#$8001,(f_demo).w
000058bc 11fc0008f600	move.b	#id_Demo,(v_gamemode).w
000058c2 11fc0003fe12	move.b	#3,(v_lives).w
000058c8 7000	moveq	#0,d0
000058ca 31c0fe20	move.w	d0,(v_rings).w
000058ce 21c0fe22	move.l	d0,(v_time).w
000058d2 21c0fe26	move.l	d0,(v_score).w
000058d6 11c0fe30	move.b	d0,(v_lastlamp).w
000058da 0c780004fff4	cmpi.w	#4,(v_creditsnum).w
000058e0 6614	bne.s	EndDemo_Exit
000058e2 43f900005908	lea	(EndDemo_LampVar).l,a1
000058e8 45f8fe30	lea	(v_lastlamp).w,a2
000058ec 303c0008	move.w	#(EndDemo_LampVar_End-EndDemo_LampVar)/4-1,d0
000058f0 24d9	move.l	(a1)+,(a2)+
000058f2 51c8fffc	dbf	d0,EndDemo_LampLoad
000058f6 4e75	rts	
0000592c 6100bcb0	bsr.w	ClearPLC
00005930 6100c520	bsr.w	PaletteFadeOut
00005934 4df900c00004	lea	(vdp_control_port).l,a6
0000593a 3cbc8004	move.w	#$8004,(a6)
0000593e 3cbc8230	move.w	#$8200+(vram_fg>>10),(a6)
00005942 3cbc8407	move.w	#$8400+(vram_bg>>13),(a6)
00005946 3cbc9001	move.w	#$9001,(a6)
0000594a 3cbc9200	move.w	#$9200,(a6)
0000594e 3cbc8b03	move.w	#$8B03,(a6)
00005952 3cbc8720	move.w	#$8720,(a6)
00005956 4238f64e	clr.b	(f_wtr_state).w
0000595a 6100b968	bsr.w	ClearScreen
0000595e 43f8d000	lea	(v_objspace).w,a1
00005962 7000	moveq	#0,d0
00005964 323c07ff	move.w	#.length/4-1,d1
00005968 22c0	move.l	d0,(a1)+
0000596a 51c9fffc	dbf	d1,.loop
0000596e 701d	moveq	#plcid_TryAgain,d0
00005970 6100bd7a	bsr.w	QuickPLC
00005974 43f8fb80	lea	(v_palette_fading).w,a1
00005978 7000	moveq	#0,d0
0000597a 323c001f	move.w	#.length/4-1,d1
0000597e 22c0	move.l	d0,(a1)+
00005980 51c9fffc	dbf	d1,.loop
00005984 7013	moveq	#palid_Ending,d0
00005986 6100c774	bsr.w	PalLoad_Fade
0000598a 4278fbc0	clr.w	(v_palette_fading_line_3).w
0000598e 11fc008bd080	move.b	#id_EndEggman,(v_endeggman).w
00005994 4eb90000d338	jsr	(ExecuteObjects).l
0000599a 4eb90000d65e	jsr	(BuildSprites).l
000059a0 31fc0708f614	move.w	#1800,(v_generictimer).w
000059a6 6100c404	bsr.w	PaletteFadeIn
000059aa 6100b9fc	bsr.w	PauseGame
000059ae 11fc0004f62a	move.b	#id_VBlank_Title,(v_vblank_routine).w
000059b4 6100cff2	bsr.w	WaitForVBlank
000059b8 4eb90000d338	jsr	(ExecuteObjects).l
000059be 4eb90000d65e	jsr	(BuildSprites).l
000059c4 02380080f605	andi.b	#btnStart,(v_jpadpress1).w
000059ca 660e	bne.s	TryAg_Exit
000059cc 4a78f614	tst.w	(v_generictimer).w
000059d0 6708	beq.s	TryAg_Exit
000059d2 0c38001cf600	cmpi.b	#id_Credits,(v_gamemode).w
000059d8 67d0	beq.s	TryAg_MainLoop
000059da 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
000059e0 4e75	rts	
000059e2 7000	moveq	#0,d0
000059e4 10280024	move.b	obRoutine(a0),d0
000059e8 323b000c	move.w	EEgg_Index(pc,d0.w),d1
000059ec 4ebb1008	jsr	EEgg_Index(pc,d1.w)
000059f0 4ef90000d604	jmp	(DisplaySprite).l
000059fe 54280024	addq.b	#2,obRoutine(a0)
00005a02 317c01200008	move.w	#$120,obX(a0)
00005a08 317c00f4000a	move.w	#$F4,obScreenY(a0)
00005a0e 217c00005bbc0004	move.l	#Map_EEgg,obMap(a0)
00005a16 317c03e10002	move.w	#ArtTile_Try_Again_Eggman,obGfx(a0)
00005a1c 117c00000001	move.b	#0,obRender(a0)
00005a22 117c00020018	move.b	#2,obPriority(a0)
00005a28 117c0002001c	move.b	#2,obAnim(a0)
00005a2e 0c380006fe57	cmpi.b	#6,(v_emeralds).w
00005a34 6718	beq.s	EEgg_Animate
00005a36 11fc008ad0c0	move.b	#id_CreditsText,(v_tryagain).w
00005a3c 31fc0009fff4	move.w	#9,(v_creditsnum).w
00005a42 11fc008cd800	move.b	#id_TryChaos,(v_eggmanchaos).w
00005a48 117c0000001c	move.b	#0,obAnim(a0)
00005a4e 43f900005aa2	lea	(Ani_EEgg).l,a1
00005a54 4ef90000a718	jmp	(AnimateSprite).l
00005a5a 54280024	addq.b	#2,obRoutine(a0)
00005a5e 7002	moveq	#2,d0
00005a60 08280000001c	btst	#0,obAnim(a0)
00005a66 6702	beq.s	.noflip
00005a68 4440	neg.w	d0
00005a6a 43f8d800	lea	(v_eggmanchaos).w,a1
00005a6e 7205	moveq	#5,d1
00005a70 1340003e	move.b	d0,objoff_3E(a1)
00005a74 3400	move.w	d0,d2
00005a76 e742	asl.w	#3,d2
00005a78 d5290026	add.b	d2,obAngle(a1)
00005a7c 43e90040	lea	object_size(a1),a1
00005a80 51c9ffee	dbf	d1,.emeraldloop
00005a84 5228001a	addq.b	#1,obFrame(a0)
00005a88 317c00700030	move.w	#112,eegg_time(a0)
00005a8e 53680030	subq.w	#1,eegg_time(a0)
00005a92 6a0c	bpl.s	.nochg
00005a94 08680000001c	bchg	#0,obAnim(a0)
00005a9a 117c00020024	move.b	#2,obRoutine(a0)
00005aa0 4e75	rts	
00005ac2 7000	moveq	#0,d0
00005ac4 10280024	move.b	obRoutine(a0),d0
00005ac8 323b000c	move.w	TCha_Index(pc,d0.w),d1
00005acc 4ebb1008	jsr	TCha_Index(pc,d1.w)
00005ad0 4ef90000d604	jmp	(DisplaySprite).l
00005ada 2248	movea.l	a0,a1
00005adc 7400	moveq	#0,d2
00005ade 7600	moveq	#0,d3
00005ae0 7205	moveq	#5,d1
00005ae2 9238fe57	sub.b	(v_emeralds).w,d1
00005ae6 12bc008c	move.b	#id_TryChaos,obID(a1)
00005aea 54290024	addq.b	#2,obRoutine(a1)
00005aee 237c0000577a0004	move.l	#Map_ECha,obMap(a1)
00005af6 337c03c50002	move.w	#ArtTile_Try_Again_Emeralds,obGfx(a1)
00005afc 137c00000001	move.b	#0,obRender(a1)
00005b02 137c00010018	move.b	#1,obPriority(a1)
00005b08 337c01040008	move.w	#$104,obX(a1)
00005b0e 337c01200038	move.w	#$120,objoff_38(a1)
00005b14 337c00ec000a	move.w	#$EC,obScreenY(a1)
00005b1a 3369000a003a	move.w	obScreenY(a1),objoff_3A(a1)
00005b20 137c001c003c	move.b	#$1C,objoff_3C(a1)
00005b26 47f8fe58	lea	(v_emldlist).w,a3
00005b2a 7000	moveq	#0,d0
00005b2c 1038fe57	move.b	(v_emeralds).w,d0
00005b30 5340	subq.w	#1,d0
00005b32 650e	bcs.s	.loc_5B42
00005b34 b4330000	cmp.b	(a3,d0.w),d2
00005b38 6604	bne.s	.notgot
00005b3a 5202	addq.b	#1,d2
00005b3c 60ec	bra.s	.chkemerald
00005b3e 51c8fff4	dbf	d0,.chkloop
00005b42 1342001a	move.b	d2,obFrame(a1)
00005b46 5229001a	addq.b	#1,obFrame(a1)
00005b4a 5202	addq.b	#1,d2
00005b4c 137c00800026	move.b	#$80,obAngle(a1)
00005b52 1343001e	move.b	d3,obTimeFrame(a1)
00005b56 1343001f	move.b	d3,obDelayAni(a1)
00005b5a 0643000a	addi.w	#10,d3
00005b5e 43e90040	lea	object_size(a1),a1
00005b62 51c9ff82	dbf	d1,.makeemerald
00005b66 4a68003e	tst.w	objoff_3E(a0)
00005b6a 674e	beq.s	locret_5BBA
00005b6c 4a28001e	tst.b	obTimeFrame(a0)
00005b70 6706	beq.s	loc_5B78
00005b72 5328001e	subq.b	#1,obTimeFrame(a0)
00005b76 6608	bne.s	loc_5B80
00005b78 3028003e	move.w	objoff_3E(a0),d0
00005b7c d1680026	add.w	d0,obAngle(a0)
00005b80 10280026	move.b	obAngle(a0),d0
00005b84 6706	beq.s	loc_5B8C
00005b86 0c000080	cmpi.b	#$80,d0
00005b8a 660a	bne.s	loc_5B96
00005b8c 4268003e	clr.w	objoff_3E(a0)
00005b90 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
00005b96 4eb9000029da	jsr	(CalcSine).l
00005b9c 7800	moveq	#0,d4
00005b9e 1828003c	move.b	objoff_3C(a0),d4
00005ba2 c3c4	muls.w	d4,d1
00005ba4 e081	asr.l	#8,d1
00005ba6 c1c4	muls.w	d4,d0
00005ba8 e080	asr.l	#8,d0
00005baa d2680038	add.w	objoff_38(a0),d1
00005bae d068003a	add.w	objoff_3A(a0),d0
00005bb2 31410008	move.w	d1,obX(a0)
00005bb6 3140000a	move.w	d0,obScreenY(a0)
00005bba 4e75	rts	
00005ebe 7000	moveq	#0,d0
00005ec0 11c0f740	move.b	d0,(v_unused7).w
00005ec4 11c0f741	move.b	d0,(v_unused8).w
00005ec8 11c0f746	move.b	d0,(v_unused9).w
00005ecc 11c0f748	move.b	d0,(v_unused10).w
00005ed0 11c0f742	move.b	d0,(v_dle_routine).w
00005ed4 3038fe10	move.w	(v_zone).w,d0
00005ed8 ed08	lsl.b	#6,d0
00005eda e848	lsr.w	#4,d0
00005edc 3200	move.w	d0,d1
00005ede d040	add.w	d0,d0
00005ee0 d041	add.w	d1,d0
00005ee2 41fb0038	lea	LevelSizeArray(pc,d0.w),a0
00005ee6 3018	move.w	(a0)+,d0
00005ee8 31c0f730	move.w	d0,(v_unused11).w
00005eec 2018	move.l	(a0)+,d0
00005eee 21c0f728	move.l	d0,(v_limitleft2).w
00005ef2 21c0f720	move.l	d0,(v_limitleft1).w
00005ef6 2018	move.l	(a0)+,d0
00005ef8 21c0f72c	move.l	d0,(v_limittop2).w
00005efc 21c0f724	move.l	d0,(v_limittop1).w
00005f00 3038f728	move.w	(v_limitleft2).w,d0
00005f04 06400240	addi.w	#$240,d0
00005f08 31c0f732	move.w	d0,(v_limitleft3).w
00005f0c 31fc1010f74a	move.w	#$1010,(v_fg_xblock).w
00005f12 3018	move.w	(a0)+,d0
00005f14 31c0f73e	move.w	d0,(v_lookshift).w
00005f18 60000172	bra.w	LevSz_ChkLamp
0000608c 4a38fe30	tst.b	(v_lastlamp).w
00006090 6710	beq.s	LevSz_StartLoc
00006092 4eb90001704c	jsr	(Lamp_LoadInfo).l
00006098 3238d008	move.w	(v_player+obX).w,d1
0000609c 3038d00c	move.w	(v_player+obY).w,d0
000060a0 602e	bra.s	LevSz_SkipStartPos
000060a2 3038fe10	move.w	(v_zone).w,d0
000060a6 ed08	lsl.b	#6,d0
000060a8 e848	lsr.w	#4,d0
000060aa 43fb0066	lea	StartLocArray(pc,d0.w),a1
000060ae 4a78fff0	tst.w	(f_demo).w
000060b2 6a0c	bpl.s	LevSz_SonicPos
000060b4 3038fff4	move.w	(v_creditsnum).w,d0
000060b8 5340	subq.w	#1,d0
000060ba e548	lsl.w	#2,d0
000060bc 43fb00ae	lea	EndingStLocArray(pc,d0.w),a1
000060c0 7200	moveq	#0,d1
000060c2 3219	move.w	(a1)+,d1
000060c4 31c1d008	move.w	d1,(v_player+obX).w
000060c8 7000	moveq	#0,d0
000060ca 3011	move.w	(a1),d0
000060cc 31c0d00c	move.w	d0,(v_player+obY).w
000060d0 044100a0	subi.w	#160,d1
000060d4 6402	bcc.s	SetScr_WithinLeft
000060d6 7200	moveq	#0,d1
000060d8 3438f72a	move.w	(v_limitright2).w,d2
000060dc b242	cmp.w	d2,d1
000060de 6502	blo.s	SetScr_WithinRight
000060e0 3202	move.w	d2,d1
000060e2 31c1f700	move.w	d1,(v_screenposx).w
000060e6 04400060	subi.w	#96,d0
000060ea 6402	bcc.s	SetScr_WithinTop
000060ec 7000	moveq	#0,d0
000060ee b078f72e	cmp.w	(v_limitbtm2).w,d0
000060f2 6d04	blt.s	SetScr_WithinBottom
000060f4 3038f72e	move.w	(v_limitbtm2).w,d0
000060f8 31c0f704	move.w	d0,(v_screenposy).w
000060fc 610000ee	bsr.w	BgScrollSpeed
00006100 7000	moveq	#0,d0
00006102 1038fe10	move.b	(v_zone).w,d0
00006106 e508	lsl.b	#2,d0
00006108 21fb0078f7ac	move.l	LoopTileNums(pc,d0.w),(v_256loop1).w
0000610e 6000008e	bra.w	LevSz_LoadScrollBlockSize
0000619e 7000	moveq	#0,d0
000061a0 1038fe10	move.b	(v_zone).w,d0
000061a4 e748	lsl.w	#3,d0
000061a6 43fb000c	lea	BGScrollBlockSizes(pc,d0.w),a1
000061aa 45f8f7f0	lea	(v_scroll_block_1_size).w,a2
000061ae 24d9	move.l	(a1)+,(a2)+
000061b0 24d9	move.l	(a1)+,(a2)+
000061b2 4e75	rts	
000061ec 4a38fe30	tst.b	(v_lastlamp).w
000061f0 6614	bne.s	loc_6206
000061f2 31c0f70c	move.w	d0,(v_bgscreenposy).w
000061f6 31c0f714	move.w	d0,(v_bg2screenposy).w
000061fa 31c1f708	move.w	d1,(v_bgscreenposx).w
000061fe 31c1f710	move.w	d1,(v_bg2screenposx).w
00006202 31c1f718	move.w	d1,(v_bg3screenposx).w
00006206 7400	moveq	#0,d2
00006208 1438fe10	move.b	(v_zone).w,d2
0000620c d442	add.w	d2,d2
0000620e 343b2006	move.w	BgScroll_Index(pc,d2.w),d2
00006212 4efb2002	jmp	BgScroll_Index(pc,d2.w)
00006224 600000c6	bra.w	Deform_GHZ
00006228 e280	asr.l	#1,d0
0000622a 31c0f70c	move.w	d0,(v_bgscreenposy).w
0000622e 4e75	rts	
00006230 4e75	rts	
00006232 e280	asr.l	#1,d0
00006234 064000c0	addi.w	#$C0,d0
00006238 31c0f70c	move.w	d0,(v_bgscreenposy).w
0000623c 4e75	rts	
0000623e e980	asl.l	#4,d0
00006240 2400	move.l	d0,d2
00006242 e380	asl.l	#1,d0
00006244 d082	add.l	d2,d0
00006246 e080	asr.l	#8,d0
00006248 31c0f70c	move.w	d0,(v_bgscreenposy).w
0000624c 31c0f714	move.w	d0,(v_bg2screenposy).w
00006250 4e75	rts	
00006252 e980	asl.l	#4,d0
00006254 e380	asl.l	#1,d0
00006256 e080	asr.l	#8,d0
00006258 31c0f70c	move.w	d0,(v_bgscreenposy).w
0000625c 4e75	rts	
0000625e 31fc001ef70c	move.w	#$1E,(v_bgscreenposy).w
00006264 31fc001ef714	move.w	#$1E,(v_bg2screenposy).w
0000626a 4e75	rts	
0000626c 31fc00a8f708	move.w	#$A8,(v_bgscreenposx).w
00006272 31fc001ef70c	move.w	#$1E,(v_bgscreenposy).w
00006278 31fcffc0f710	move.w	#-$40,(v_bg2screenposx).w
0000627e 31fc001ef714	move.w	#$1E,(v_bg2screenposy).w
00006284 4e75	rts	
00006286 4a38f744	tst.b	(f_nobgscroll).w
0000628a 6702	beq.s	.bgscroll
0000628c 4e75	rts	
0000628e 4278f754	clr.w	(v_fg_scroll_flags).w
00006292 4278f756	clr.w	(v_bg1_scroll_flags).w
00006296 4278f758	clr.w	(v_bg2_scroll_flags).w
0000629a 4278f75a	clr.w	(v_bg3_scroll_flags).w
0000629e 610002de	bsr.w	ScrollHoriz
000062a2 61000372	bsr.w	ScrollVertical
000062a6 61000ac4	bsr.w	DynamicLevelEvents
000062aa 31f8f700f61a	move.w	(v_screenposx).w,(v_scrposx_vdp).w
000062b0 31f8f704f616	move.w	(v_screenposy).w,(v_scrposy_vdp).w
000062b6 31f8f708f61c	move.w	(v_bgscreenposx).w,(v_bgscrposx_vdp).w
000062bc 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
000062c2 31f8f718f620	move.w	(v_bg3screenposx).w,(v_bg3scrposx_vdp).w
000062c8 31f8f71cf61e	move.w	(v_bg3screenposy).w,(v_bg3scrposy_vdp).w
000062ce 7000	moveq	#0,d0
000062d0 1038fe10	move.b	(v_zone).w,d0
000062d4 d040	add.w	d0,d0
000062d6 303b0006	move.w	Deform_Index(pc,d0.w),d0
000062da 4efb0002	jmp	Deform_Index(pc,d0.w)
000062ec 3838f73a	move.w	(v_scrshiftx).w,d4
000062f0 48c4	ext.l	d4
000062f2 eb84	asl.l	#5,d4
000062f4 2204	move.l	d4,d1
000062f6 e384	asl.l	#1,d4
000062f8 d881	add.l	d1,d4
000062fa 7a00	moveq	#0,d5
000062fc 6100046a	bsr.w	ScrollBlock1
00006300 61000542	bsr.w	ScrollBlock4
00006304 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00006308 3038f704	move.w	(v_screenposy).w,d0
0000630c 024007ff	andi.w	#$7FF,d0
00006310 ea48	lsr.w	#5,d0
00006312 4440	neg.w	d0
00006314 06400026	addi.w	#$26,d0
00006318 31c0f714	move.w	d0,(v_bg2screenposy).w
0000631c 3800	move.w	d0,d4
0000631e 610004f4	bsr.w	ScrollBlock3
00006322 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00006328 323c006f	move.w	#$6F,d1
0000632c 9244	sub.w	d4,d1
0000632e 3038f700	move.w	(v_screenposx).w,d0
00006332 0c380004f600	cmpi.b	#id_Title,(v_gamemode).w
00006338 6602	bne.s	loc_633C
0000633a 7000	moveq	#0,d0
0000633c 4440	neg.w	d0
0000633e 4840	swap	d0
00006340 3038f708	move.w	(v_bgscreenposx).w,d0
00006344 4440	neg.w	d0
00006346 22c0	move.l	d0,(a1)+
00006348 51c9fffc	dbf	d1,loc_6346
0000634c 323c0027	move.w	#$27,d1
00006350 3038f710	move.w	(v_bg2screenposx).w,d0
00006354 4440	neg.w	d0
00006356 22c0	move.l	d0,(a1)+
00006358 51c9fffc	dbf	d1,loc_6356
0000635c 3038f710	move.w	(v_bg2screenposx).w,d0
00006360 06400000	addi.w	#0,d0
00006364 3438f700	move.w	(v_screenposx).w,d2
00006368 0642fe00	addi.w	#-$200,d2
0000636c 9440	sub.w	d0,d2
0000636e 48c2	ext.l	d2
00006370 e182	asl.l	#8,d2
00006372 85fc0068	divs.w	#$68,d2
00006376 48c2	ext.l	d2
00006378 e182	asl.l	#8,d2
0000637a 7600	moveq	#0,d3
0000637c 3600	move.w	d0,d3
0000637e 323c0047	move.w	#$47,d1
00006382 d244	add.w	d4,d1
00006384 3003	move.w	d3,d0
00006386 4440	neg.w	d0
00006388 22c0	move.l	d0,(a1)+
0000638a 4843	swap	d3
0000638c d682	add.l	d2,d3
0000638e 4843	swap	d3
00006390 51c9fff2	dbf	d1,loc_6384
00006394 4e75	rts	
00006396 3838f73a	move.w	(v_scrshiftx).w,d4
0000639a 48c4	ext.l	d4
0000639c ef84	asl.l	#7,d4
0000639e 3a38f73c	move.w	(v_scrshifty).w,d5
000063a2 48c5	ext.l	d5
000063a4 ef85	asl.l	#7,d5
000063a6 610003c0	bsr.w	ScrollBlock1
000063aa 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
000063b0 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
000063b4 323c00df	move.w	#223,d1
000063b8 3038f700	move.w	(v_screenposx).w,d0
000063bc 4440	neg.w	d0
000063be 4840	swap	d0
000063c0 3038f708	move.w	(v_bgscreenposx).w,d0
000063c4 4440	neg.w	d0
000063c6 22c0	move.l	d0,(a1)+
000063c8 51c9fffc	dbf	d1,loc_63C6
000063cc 3038f646	move.w	(v_waterpos1).w,d0
000063d0 9078f704	sub.w	(v_screenposy).w,d0
000063d4 4e75	rts	
000063d6 3838f73a	move.w	(v_scrshiftx).w,d4
000063da 48c4	ext.l	d4
000063dc ed84	asl.l	#6,d4
000063de 2204	move.l	d4,d1
000063e0 e384	asl.l	#1,d4
000063e2 d881	add.l	d1,d4
000063e4 7a00	moveq	#0,d5
000063e6 61000380	bsr.w	ScrollBlock1
000063ea 303c0200	move.w	#$200,d0
000063ee 3238f704	move.w	(v_screenposy).w,d1
000063f2 044101c8	subi.w	#$1C8,d1
000063f6 650a	bcs.s	loc_6402
000063f8 3401	move.w	d1,d2
000063fa d241	add.w	d1,d1
000063fc d242	add.w	d2,d1
000063fe e441	asr.w	#2,d1
00006400 d041	add.w	d1,d0
00006402 31c0f714	move.w	d0,(v_bg2screenposy).w
00006406 6100040c	bsr.w	ScrollBlock3
0000640a 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00006410 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00006414 323c00df	move.w	#223,d1
00006418 3038f700	move.w	(v_screenposx).w,d0
0000641c 4440	neg.w	d0
0000641e 4840	swap	d0
00006420 3038f708	move.w	(v_bgscreenposx).w,d0
00006424 4440	neg.w	d0
00006426 22c0	move.l	d0,(a1)+
00006428 51c9fffc	dbf	d1,loc_6426
0000642c 4e75	rts	
0000642e 3838f73a	move.w	(v_scrshiftx).w,d4
00006432 48c4	ext.l	d4
00006434 ef84	asl.l	#7,d4
00006436 3a38f73c	move.w	(v_scrshifty).w,d5
0000643a 48c5	ext.l	d5
0000643c ef85	asl.l	#7,d5
0000643e 61000392	bsr.w	ScrollBlock2
00006442 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00006448 6100005e	bsr.w	Deform_SLZ_2
0000644c 45f8a800	lea	(v_bgscroll_buffer).w,a2
00006450 3038f70c	move.w	(v_bgscreenposy).w,d0
00006454 3400	move.w	d0,d2
00006456 044000c0	subi.w	#$C0,d0
0000645a 024003f0	andi.w	#$3F0,d0
0000645e e648	lsr.w	#3,d0
00006460 45f20000	lea	(a2,d0.w),a2
00006464 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00006468 323c000e	move.w	#$E,d1
0000646c 3038f700	move.w	(v_screenposx).w,d0
00006470 4440	neg.w	d0
00006472 4840	swap	d0
00006474 0242000f	andi.w	#$F,d2
00006478 d442	add.w	d2,d2
0000647a 301a	move.w	(a2)+,d0
0000647c 4efb2004	jmp	loc_6482(pc,d2.w)
00006480 301a	move.w	(a2)+,d0
00006482 22c0	move.l	d0,(a1)+
00006484 22c0	move.l	d0,(a1)+
00006486 22c0	move.l	d0,(a1)+
00006488 22c0	move.l	d0,(a1)+
0000648a 22c0	move.l	d0,(a1)+
0000648c 22c0	move.l	d0,(a1)+
0000648e 22c0	move.l	d0,(a1)+
00006490 22c0	move.l	d0,(a1)+
00006492 22c0	move.l	d0,(a1)+
00006494 22c0	move.l	d0,(a1)+
00006496 22c0	move.l	d0,(a1)+
00006498 22c0	move.l	d0,(a1)+
0000649a 22c0	move.l	d0,(a1)+
0000649c 22c0	move.l	d0,(a1)+
0000649e 22c0	move.l	d0,(a1)+
000064a0 22c0	move.l	d0,(a1)+
000064a2 51c9ffdc	dbf	d1,loc_6480
000064a6 4e75	rts	
000064a8 43f8a800	lea	(v_bgscroll_buffer).w,a1
000064ac 3438f700	move.w	(v_screenposx).w,d2
000064b0 4442	neg.w	d2
000064b2 3002	move.w	d2,d0
000064b4 e640	asr.w	#3,d0
000064b6 9042	sub.w	d2,d0
000064b8 48c0	ext.l	d0
000064ba e980	asl.l	#4,d0
000064bc 81fc001c	divs.w	#$1C,d0
000064c0 48c0	ext.l	d0
000064c2 e980	asl.l	#4,d0
000064c4 e180	asl.l	#8,d0
000064c6 7600	moveq	#0,d3
000064c8 3602	move.w	d2,d3
000064ca 323c001b	move.w	#$1B,d1
000064ce 32c3	move.w	d3,(a1)+
000064d0 4843	swap	d3
000064d2 d680	add.l	d0,d3
000064d4 4843	swap	d3
000064d6 51c9fff6	dbf	d1,loc_64CE
000064da 3002	move.w	d2,d0
000064dc e640	asr.w	#3,d0
000064de 323c0004	move.w	#4,d1
000064e2 32c0	move.w	d0,(a1)+
000064e4 51c9fffc	dbf	d1,loc_64E2
000064e8 3002	move.w	d2,d0
000064ea e440	asr.w	#2,d0
000064ec 323c0004	move.w	#4,d1
000064f0 32c0	move.w	d0,(a1)+
000064f2 51c9fffc	dbf	d1,loc_64F0
000064f6 3002	move.w	d2,d0
000064f8 e240	asr.w	#1,d0
000064fa 323c001d	move.w	#$1D,d1
000064fe 32c0	move.w	d0,(a1)+
00006500 51c9fffc	dbf	d1,loc_64FE
00006504 4e75	rts	
00006506 3838f73a	move.w	(v_scrshiftx).w,d4
0000650a 48c4	ext.l	d4
0000650c ed84	asl.l	#6,d4
0000650e 3a38f73c	move.w	(v_scrshifty).w,d5
00006512 48c5	ext.l	d5
00006514 e985	asl.l	#4,d5
00006516 2205	move.l	d5,d1
00006518 e385	asl.l	#1,d5
0000651a da81	add.l	d1,d5
0000651c 6100024a	bsr.w	ScrollBlock1
00006520 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00006526 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
0000652a 323c00df	move.w	#223,d1
0000652e 3038f700	move.w	(v_screenposx).w,d0
00006532 4440	neg.w	d0
00006534 4840	swap	d0
00006536 3038f708	move.w	(v_bgscreenposx).w,d0
0000653a 4440	neg.w	d0
0000653c 22c0	move.l	d0,(a1)+
0000653e 51c9fffc	dbf	d1,loc_653C
00006542 4e75	rts	
00006544 3838f73a	move.w	(v_scrshiftx).w,d4
00006548 48c4	ext.l	d4
0000654a ed84	asl.l	#6,d4
0000654c 3a38f73c	move.w	(v_scrshifty).w,d5
00006550 48c5	ext.l	d5
00006552 e985	asl.l	#4,d5
00006554 e385	asl.l	#1,d5
00006556 61000210	bsr.w	ScrollBlock1
0000655a 31f8f70cf618	move.w	(v_bgscreenposy).w,(v_bgscrposy_vdp).w
00006560 43f8cc00	lea	(v_hscrolltablebuffer).w,a1
00006564 323c00df	move.w	#223,d1
00006568 3038f700	move.w	(v_screenposx).w,d0
0000656c 4440	neg.w	d0
0000656e 4840	swap	d0
00006570 3038f708	move.w	(v_bgscreenposx).w,d0
00006574 4440	neg.w	d0
00006576 22c0	move.l	d0,(a1)+
00006578 51c9fffc	dbf	d1,loc_6576
0000657c 4e75	rts	
0000657e 3838f700	move.w	(v_screenposx).w,d4
00006582 612e	bsr.s	MoveScreenHoriz
00006584 3038f700	move.w	(v_screenposx).w,d0
00006588 02400010	andi.w	#$10,d0
0000658c 1238f74a	move.b	(v_fg_xblock).w,d1
00006590 b300	eor.b	d1,d0
00006592 661c	bne.s	locret_65B0
00006594 0a380010f74a	eori.b	#$10,(v_fg_xblock).w
0000659a 3038f700	move.w	(v_screenposx).w,d0
0000659e 9044	sub.w	d4,d0
000065a0 6a08	bpl.s	SH_Forward
000065a2 08f80002f754	bset	#2,(v_fg_scroll_flags).w
000065a8 4e75	rts	
000065aa 08f80003f754	bset	#3,(v_fg_scroll_flags).w
000065b0 4e75	rts	
000065b2 3038d008	move.w	(v_player+obX).w,d0
000065b6 9078f700	sub.w	(v_screenposx).w,d0
000065ba 04400090	subi.w	#(320/2)-16,d0
000065be 6536	bcs.s	SH_BehindMid
000065c0 04400010	subi.w	#16,d0
000065c4 6406	bcc.s	SH_AheadOfMid
000065c6 4278f73a	clr.w	(v_scrshiftx).w
000065ca 4e75	rts	
000065cc 0c400010	cmpi.w	#16,d0
000065d0 6504	blo.s	SH_Ahead16
000065d2 303c0010	move.w	#16,d0
000065d6 d078f700	add.w	(v_screenposx).w,d0
000065da b078f72a	cmp.w	(v_limitright2).w,d0
000065de 6d04	blt.s	SH_SetScreen
000065e0 3038f72a	move.w	(v_limitright2).w,d0
000065e4 3200	move.w	d0,d1
000065e6 9278f700	sub.w	(v_screenposx).w,d1
000065ea e141	asl.w	#8,d1
000065ec 31c0f700	move.w	d0,(v_screenposx).w
000065f0 31c1f73a	move.w	d1,(v_scrshiftx).w
000065f4 4e75	rts	
000065f6 d078f700	add.w	(v_screenposx).w,d0
000065fa b078f728	cmp.w	(v_limitleft2).w,d0
000065fe 6ee4	bgt.s	SH_SetScreen
00006600 3038f728	move.w	(v_limitleft2).w,d0
00006604 60de	bra.s	SH_SetScreen
00006606 4a40	tst.w	d0
00006608 6a06	bpl.s	loc_6610
0000660a 303cfffe	move.w	#-2,d0
0000660e 60e6	bra.s	SH_BehindMid
00006610 303c0002	move.w	#2,d0
00006614 60b6	bra.s	SH_AheadOfMid
00006616 7200	moveq	#0,d1
00006618 3038d00c	move.w	(v_player+obY).w,d0
0000661c 9078f704	sub.w	(v_screenposy).w,d0
00006620 08380002d022	btst	#2,(v_player+obStatus).w
00006626 6702	beq.s	SV_NotRolling
00006628 5b40	subq.w	#5,d0
0000662a 08380001d022	btst	#1,(v_player+obStatus).w
00006630 6718	beq.s	loc_664A
00006632 06400020	addi.w	#32,d0
00006636 9078f73e	sub.w	(v_lookshift).w,d0
0000663a 655a	bcs.s	loc_6696
0000663c 04400040	subi.w	#64,d0
00006640 6454	bcc.s	loc_6696
00006642 4a38f75c	tst.b	(f_bgscrollvert).w
00006646 6660	bne.s	loc_66A8
00006648 600c	bra.s	loc_6656
0000664a 9078f73e	sub.w	(v_lookshift).w,d0
0000664e 660c	bne.s	loc_665C
00006650 4a38f75c	tst.b	(f_bgscrollvert).w
00006654 6652	bne.s	loc_66A8
00006656 4278f73c	clr.w	(v_scrshifty).w
0000665a 4e75	rts	
0000665c 0c780060f73e	cmpi.w	#$60,(v_lookshift).w
00006662 6620	bne.s	loc_6684
00006664 3238d014	move.w	(v_player+obInertia).w,d1
00006668 6a02	bpl.s	loc_666C
0000666a 4441	neg.w	d1
0000666c 0c410800	cmpi.w	#$800,d1
00006670 6424	bhs.s	loc_6696
00006672 323c0600	move.w	#$600,d1
00006676 0c400006	cmpi.w	#6,d0
0000667a 6e7a	bgt.s	loc_66F6
0000667c 0c40fffa	cmpi.w	#-6,d0
00006680 6d3e	blt.s	loc_66C0
00006682 602a	bra.s	loc_66AE
00006684 323c0200	move.w	#$200,d1
00006688 0c400002	cmpi.w	#2,d0
0000668c 6e68	bgt.s	loc_66F6
0000668e 0c40fffe	cmpi.w	#-2,d0
00006692 6d2c	blt.s	loc_66C0
00006694 6018	bra.s	loc_66AE
00006696 323c1000	move.w	#$1000,d1
0000669a 0c400010	cmpi.w	#$10,d0
0000669e 6e56	bgt.s	loc_66F6
000066a0 0c40fff0	cmpi.w	#-$10,d0
000066a4 6d1a	blt.s	loc_66C0
000066a6 6006	bra.s	loc_66AE
000066a8 7000	moveq	#0,d0
000066aa 11c0f75c	move.b	d0,(f_bgscrollvert).w
000066ae 7200	moveq	#0,d1
000066b0 3200	move.w	d0,d1
000066b2 d278f704	add.w	(v_screenposy).w,d1
000066b6 4a40	tst.w	d0
000066b8 6a000046	bpl.w	loc_6700
000066bc 6000000e	bra.w	loc_66CC
000066c0 4441	neg.w	d1
000066c2 48c1	ext.l	d1
000066c4 e181	asl.l	#8,d1
000066c6 d2b8f704	add.l	(v_screenposy).w,d1
000066ca 4841	swap	d1
000066cc b278f72c	cmp.w	(v_limittop2).w,d1
000066d0 6e52	bgt.s	loc_6724
000066d2 0c41ff00	cmpi.w	#-$100,d1
000066d6 6e18	bgt.s	loc_66F0
000066d8 024107ff	andi.w	#$7FF,d1
000066dc 027807ffd00c	andi.w	#$7FF,(v_player+obY).w
000066e2 027807fff704	andi.w	#$7FF,(v_screenposy).w
000066e8 027803fff70c	andi.w	#$3FF,(v_bgscreenposy).w
000066ee 6034	bra.s	loc_6724
000066f0 3238f72c	move.w	(v_limittop2).w,d1
000066f4 602e	bra.s	loc_6724
000066f6 48c1	ext.l	d1
000066f8 e181	asl.l	#8,d1
000066fa d2b8f704	add.l	(v_screenposy).w,d1
000066fe 4841	swap	d1
00006700 b278f72e	cmp.w	(v_limitbtm2).w,d1
00006704 6d1e	blt.s	loc_6724
00006706 04410800	subi.w	#$800,d1
0000670a 6514	bcs.s	loc_6720
0000670c 027807ffd00c	andi.w	#$7FF,(v_player+obY).w
00006712 04780800f704	subi.w	#$800,(v_screenposy).w
00006718 027803fff70c	andi.w	#$3FF,(v_bgscreenposy).w
0000671e 6004	bra.s	loc_6724
00006720 3238f72e	move.w	(v_limitbtm2).w,d1
00006724 3838f704	move.w	(v_screenposy).w,d4
00006728 4841	swap	d1
0000672a 2601	move.l	d1,d3
0000672c 96b8f704	sub.l	(v_screenposy).w,d3
00006730 e09b	ror.l	#8,d3
00006732 31c3f73c	move.w	d3,(v_scrshifty).w
00006736 21c1f704	move.l	d1,(v_screenposy).w
0000673a 3038f704	move.w	(v_screenposy).w,d0
0000673e 02400010	andi.w	#$10,d0
00006742 1238f74b	move.b	(v_fg_yblock).w,d1
00006746 b300	eor.b	d1,d0
00006748 661c	bne.s	locret_6766
0000674a 0a380010f74b	eori.b	#$10,(v_fg_yblock).w
00006750 3038f704	move.w	(v_screenposy).w,d0
00006754 9044	sub.w	d4,d0
00006756 6a08	bpl.s	loc_6760
00006758 08f80000f754	bset	#0,(v_fg_scroll_flags).w
0000675e 4e75	rts	
00006760 08f80001f754	bset	#1,(v_fg_scroll_flags).w
00006766 4e75	rts	
00006768 2438f708	move.l	(v_bgscreenposx).w,d2
0000676c 2002	move.l	d2,d0
0000676e d084	add.l	d4,d0
00006770 21c0f708	move.l	d0,(v_bgscreenposx).w
00006774 2200	move.l	d0,d1
00006776 4841	swap	d1
00006778 02410010	andi.w	#$10,d1
0000677c 1638f74c	move.b	(v_bg1_xblock).w,d3
00006780 b701	eor.b	d3,d1
00006782 6618	bne.s	loc_679C
00006784 0a380010f74c	eori.b	#$10,(v_bg1_xblock).w
0000678a 9082	sub.l	d2,d0
0000678c 6a08	bpl.s	loc_6796
0000678e 08f80002f756	bset	#2,(v_bg1_scroll_flags).w
00006794 6006	bra.s	loc_679C
00006796 08f80003f756	bset	#3,(v_bg1_scroll_flags).w
0000679c 2638f70c	move.l	(v_bgscreenposy).w,d3
000067a0 2003	move.l	d3,d0
000067a2 d085	add.l	d5,d0
000067a4 21c0f70c	move.l	d0,(v_bgscreenposy).w
000067a8 2200	move.l	d0,d1
000067aa 4841	swap	d1
000067ac 02410010	andi.w	#$10,d1
000067b0 1438f74d	move.b	(v_bg1_yblock).w,d2
000067b4 b501	eor.b	d2,d1
000067b6 6618	bne.s	locret_67D0
000067b8 0a380010f74d	eori.b	#$10,(v_bg1_yblock).w
000067be 9083	sub.l	d3,d0
000067c0 6a08	bpl.s	loc_67CA
000067c2 08f80000f756	bset	#0,(v_bg1_scroll_flags).w
000067c8 4e75	rts	
000067ca 08f80001f756	bset	#1,(v_bg1_scroll_flags).w
000067d0 4e75	rts	
000067d2 2438f708	move.l	(v_bgscreenposx).w,d2
000067d6 2002	move.l	d2,d0
000067d8 d084	add.l	d4,d0
000067da 21c0f708	move.l	d0,(v_bgscreenposx).w
000067de 2638f70c	move.l	(v_bgscreenposy).w,d3
000067e2 2003	move.l	d3,d0
000067e4 d085	add.l	d5,d0
000067e6 21c0f70c	move.l	d0,(v_bgscreenposy).w
000067ea 2200	move.l	d0,d1
000067ec 4841	swap	d1
000067ee 02410010	andi.w	#$10,d1
000067f2 1438f74d	move.b	(v_bg1_yblock).w,d2
000067f6 b501	eor.b	d2,d1
000067f8 6618	bne.s	locret_6812
000067fa 0a380010f74d	eori.b	#$10,(v_bg1_yblock).w
00006800 9083	sub.l	d3,d0
00006802 6a08	bpl.s	loc_680C
00006804 08f80000f756	bset	#0,(v_bg1_scroll_flags).w
0000680a 4e75	rts	
0000680c 08f80001f756	bset	#1,(v_bg1_scroll_flags).w
00006812 4e75	rts	
00006814 3638f70c	move.w	(v_bgscreenposy).w,d3
00006818 31c0f70c	move.w	d0,(v_bgscreenposy).w
0000681c 3200	move.w	d0,d1
0000681e 02410010	andi.w	#$10,d1
00006822 1438f74d	move.b	(v_bg1_yblock).w,d2
00006826 b501	eor.b	d2,d1
00006828 6618	bne.s	locret_6842
0000682a 0a380010f74d	eori.b	#$10,(v_bg1_yblock).w
00006830 9043	sub.w	d3,d0
00006832 6a08	bpl.s	loc_683C
00006834 08f80000f756	bset	#0,(v_bg1_scroll_flags).w
0000683a 4e75	rts	
0000683c 08f80001f756	bset	#1,(v_bg1_scroll_flags).w
00006842 4e75	rts	
00006844 3438f710	move.w	(v_bg2screenposx).w,d2
00006848 3638f714	move.w	(v_bg2screenposy).w,d3
0000684c 3038f73a	move.w	(v_scrshiftx).w,d0
00006850 48c0	ext.l	d0
00006852 ef80	asl.l	#7,d0
00006854 d1b8f710	add.l	d0,(v_bg2screenposx).w
00006858 3038f710	move.w	(v_bg2screenposx).w,d0
0000685c 02400010	andi.w	#$10,d0
00006860 1238f74e	move.b	(v_bg2_xblock).w,d1
00006864 b300	eor.b	d1,d0
00006866 661c	bne.s	locret_6884
00006868 0a380010f74e	eori.b	#$10,(v_bg2_xblock).w
0000686e 3038f710	move.w	(v_bg2screenposx).w,d0
00006872 9042	sub.w	d2,d0
00006874 6a08	bpl.s	loc_687E
00006876 08f80002f758	bset	#2,(v_bg2_scroll_flags).w
0000687c 6006	bra.s	locret_6884
0000687e 08f80003f758	bset	#3,(v_bg2_scroll_flags).w
00006884 4e75	rts	
00006886 4bf900c00004	lea	(vdp_control_port).l,a5
0000688c 4df900c00000	lea	(vdp_data_port).l,a6
00006892 45f8f756	lea	(v_bg1_scroll_flags).w,a2
00006896 47f8f708	lea	(v_bgscreenposx).w,a3
0000689a 49f8a440	lea	(v_lvllayout_bg).w,a4
0000689e 343c6000	move.w	#$6000,d2
000068a2 610000b0	bsr.w	DrawBGScrollBlock1
000068a6 45f8f758	lea	(v_bg2_scroll_flags).w,a2
000068aa 47f8f710	lea	(v_bg2screenposx).w,a3
000068ae 60000144	bra.w	DrawBGScrollBlock2
000068b2 4bf900c00004	lea	(vdp_control_port).l,a5
000068b8 4df900c00000	lea	(vdp_data_port).l,a6
000068be 45f8ff32	lea	(v_bg1_scroll_flags_dup).w,a2
000068c2 47f8ff18	lea	(v_bgscreenposx_dup).w,a3
000068c6 49f8a440	lea	(v_lvllayout_bg).w,a4
000068ca 343c6000	move.w	#$6000,d2
000068ce 61000084	bsr.w	DrawBGScrollBlock1
000068d2 45f8ff34	lea	(v_bg2_scroll_flags_dup).w,a2
000068d6 47f8ff20	lea	(v_bg2screenposx_dup).w,a3
000068da 61000118	bsr.w	DrawBGScrollBlock2
000068de 45f8ff30	lea	(v_fg_scroll_flags_dup).w,a2
000068e2 47f8ff10	lea	(v_screenposx_dup).w,a3
000068e6 49f8a400	lea	(v_lvllayout_fg).w,a4
000068ea 343c4000	move.w	#$4000,d2
000068ee 4a12	tst.b	(a2)
000068f0 6760	beq.s	locret_6952
000068f2 08920000	bclr	#0,(a2)
000068f6 6710	beq.s	loc_6908
000068f8 78f0	moveq	#-16,d4
000068fa 7af0	moveq	#-16,d5
000068fc 61000322	bsr.w	Calc_VRAM_Pos
00006900 78f0	moveq	#-16,d4
00006902 7af0	moveq	#-16,d5
00006904 610001d2	bsr.w	DrawBlocks_LR
00006908 08920001	bclr	#1,(a2)
0000690c 6714	beq.s	loc_6922
0000690e 383c00e0	move.w	#224,d4
00006912 7af0	moveq	#-16,d5
00006914 6100030a	bsr.w	Calc_VRAM_Pos
00006918 383c00e0	move.w	#224,d4
0000691c 7af0	moveq	#-16,d5
0000691e 610001b8	bsr.w	DrawBlocks_LR
00006922 08920002	bclr	#2,(a2)
00006926 6710	beq.s	loc_6938
00006928 78f0	moveq	#-16,d4
0000692a 7af0	moveq	#-16,d5
0000692c 610002f2	bsr.w	Calc_VRAM_Pos
00006930 78f0	moveq	#-16,d4
00006932 7af0	moveq	#-16,d5
00006934 610001ce	bsr.w	DrawBlocks_TB
00006938 08920003	bclr	#3,(a2)
0000693c 6714	beq.s	locret_6952
0000693e 78f0	moveq	#-16,d4
00006940 3a3c0140	move.w	#320,d5
00006944 610002da	bsr.w	Calc_VRAM_Pos
00006948 78f0	moveq	#-16,d4
0000694a 3a3c0140	move.w	#320,d5
0000694e 610001b4	bsr.w	DrawBlocks_TB
00006952 4e75	rts	
00006954 4a12	tst.b	(a2)
00006956 6700009a	beq.w	locret_69F2
0000695a 08920000	bclr	#0,(a2)
0000695e 6712	beq.s	loc_6972
00006960 78f0	moveq	#-16,d4
00006962 7af0	moveq	#-16,d5
00006964 610002ba	bsr.w	Calc_VRAM_Pos
00006968 78f0	moveq	#-16,d4
0000696a 7af0	moveq	#-16,d5
0000696c 7c1f	moveq	#(512/16)-1,d6
0000696e 6100016a	bsr.w	DrawBlocks_LR_2
00006972 08920001	bclr	#1,(a2)
00006976 6716	beq.s	loc_698E
00006978 383c00e0	move.w	#224,d4
0000697c 7af0	moveq	#-16,d5
0000697e 610002a0	bsr.w	Calc_VRAM_Pos
00006982 383c00e0	move.w	#224,d4
00006986 7af0	moveq	#-16,d5
00006988 7c1f	moveq	#(512/16)-1,d6
0000698a 6100014e	bsr.w	DrawBlocks_LR_2
0000698e 08920002	bclr	#2,(a2)
00006992 672a	beq.s	loc_69BE
00006994 78f0	moveq	#-16,d4
00006996 7af0	moveq	#-16,d5
00006998 61000286	bsr.w	Calc_VRAM_Pos
0000699c 78f0	moveq	#-16,d4
0000699e 7af0	moveq	#-16,d5
000069a0 3c38f7f0	move.w	(v_scroll_block_1_size).w,d6
000069a4 322b0004	move.w	4(a3),d1
000069a8 0241fff0	andi.w	#-16,d1
000069ac 9c41	sub.w	d1,d6
000069ae 6d0e	blt.s	loc_69BE
000069b0 e84e	lsr.w	#4,d6
000069b2 0c46000f	cmpi.w	#((224+16+16)/16)-1,d6
000069b6 6502	blo.s	loc_69BA
000069b8 7c0f	moveq	#((224+16+16)/16)-1,d6
000069ba 6100014a	bsr.w	DrawBlocks_TB_2
000069be 08920003	bclr	#3,(a2)
000069c2 672e	beq.s	locret_69F2
000069c4 78f0	moveq	#-16,d4
000069c6 3a3c0140	move.w	#320,d5
000069ca 61000254	bsr.w	Calc_VRAM_Pos
000069ce 78f0	moveq	#-16,d4
000069d0 3a3c0140	move.w	#320,d5
000069d4 3c38f7f0	move.w	(v_scroll_block_1_size).w,d6
000069d8 322b0004	move.w	4(a3),d1
000069dc 0241fff0	andi.w	#-16,d1
000069e0 9c41	sub.w	d1,d6
000069e2 6d0e	blt.s	locret_69F2
000069e4 e84e	lsr.w	#4,d6
000069e6 0c46000f	cmpi.w	#((224+16+16)/16)-1,d6
000069ea 6502	blo.s	loc_69EE
000069ec 7c0f	moveq	#((224+16+16)/16)-1,d6
000069ee 61000116	bsr.w	DrawBlocks_TB_2
000069f2 4e75	rts	
000069f4 4a12	tst.b	(a2)
000069f6 67000088	beq.w	locret_6A80
000069fa 08920002	bclr	#2,(a2)
000069fe 673e	beq.s	loc_6A3E
00006a00 0c530010	cmpi.w	#16,(a3)
00006a04 6538	blo.s	loc_6A3E
00006a06 3838f7f0	move.w	(v_scroll_block_1_size).w,d4
00006a0a 322b0004	move.w	4(a3),d1
00006a0e 0241fff0	andi.w	#-16,d1
00006a12 9841	sub.w	d1,d4
00006a14 3f04	move.w	d4,-(sp)
00006a16 7af0	moveq	#-16,d5
00006a18 61000206	bsr.w	Calc_VRAM_Pos
00006a1c 381f	move.w	(sp)+,d4
00006a1e 7af0	moveq	#-16,d5
00006a20 3c38f7f0	move.w	(v_scroll_block_1_size).w,d6
00006a24 322b0004	move.w	4(a3),d1
00006a28 0241fff0	andi.w	#-16,d1
00006a2c 9c41	sub.w	d1,d6
00006a2e 6d0e	blt.s	loc_6A3E
00006a30 e84e	lsr.w	#4,d6
00006a32 0446000e	subi.w	#((224+16)/16)-1,d6
00006a36 6406	bhs.s	loc_6A3E
00006a38 4446	neg.w	d6
00006a3a 610000ca	bsr.w	DrawBlocks_TB_2
00006a3e 08920003	bclr	#3,(a2)
00006a42 673c	beq.s	locret_6A80
00006a44 3838f7f0	move.w	(v_scroll_block_1_size).w,d4
00006a48 322b0004	move.w	4(a3),d1
00006a4c 0241fff0	andi.w	#-16,d1
00006a50 9841	sub.w	d1,d4
00006a52 3f04	move.w	d4,-(sp)
00006a54 3a3c0140	move.w	#320,d5
00006a58 610001c6	bsr.w	Calc_VRAM_Pos
00006a5c 381f	move.w	(sp)+,d4
00006a5e 3a3c0140	move.w	#320,d5
00006a62 3c38f7f0	move.w	(v_scroll_block_1_size).w,d6
00006a66 322b0004	move.w	4(a3),d1
00006a6a 0241fff0	andi.w	#-16,d1
00006a6e 9c41	sub.w	d1,d6
00006a70 6d0e	blt.s	locret_6A80
00006a72 e84e	lsr.w	#4,d6
00006a74 0446000e	subi.w	#((224+16)/16)-1,d6
00006a78 6406	bhs.s	locret_6A80
00006a7a 4446	neg.w	d6
00006a7c 61000088	bsr.w	DrawBlocks_TB_2
00006a80 4e75	rts	
00006a82 4a12	tst.b	(a2)
00006a84 6750	beq.s	locret_6AD6
00006a86 08920002	bclr	#2,(a2)
00006a8a 6720	beq.s	loc_6AAC
00006a8c 383c00d0	move.w	#224-16,d4
00006a90 322b0004	move.w	4(a3),d1
00006a94 0241fff0	andi.w	#-16,d1
00006a98 9841	sub.w	d1,d4
00006a9a 3f04	move.w	d4,-(sp)
00006a9c 7af0	moveq	#-16,d5
00006a9e 6100019c	bsr.w	Calc_VRAM_Pos_PlaneZ
00006aa2 381f	move.w	(sp)+,d4
00006aa4 7af0	moveq	#-16,d5
00006aa6 7c02	moveq	#3-1,d6
00006aa8 6100005c	bsr.w	DrawBlocks_TB_2
00006aac 08920003	bclr	#3,(a2)
00006ab0 6724	beq.s	locret_6AD6
00006ab2 383c00d0	move.w	#224-16,d4
00006ab6 322b0004	move.w	4(a3),d1
00006aba 0241fff0	andi.w	#-16,d1
00006abe 9841	sub.w	d1,d4
00006ac0 3f04	move.w	d4,-(sp)
00006ac2 3a3c0140	move.w	#320,d5
00006ac6 61000174	bsr.w	Calc_VRAM_Pos_PlaneZ
00006aca 381f	move.w	(sp)+,d4
00006acc 3a3c0140	move.w	#320,d5
00006ad0 7c02	moveq	#3-1,d6
00006ad2 61000032	bsr.w	DrawBlocks_TB_2
00006ad6 4e75	rts	
00006ad8 7c15	moveq	#((320+16+16)/16)-1,d6
00006ada 2e3c00800000	move.l	#$800000,d7
00006ae0 2200	move.l	d0,d1
00006ae2 48e70c00	movem.l	d4-d5,-(sp)
00006ae6 610000ee	bsr.w	GetBlockData
00006aea 2001	move.l	d1,d0
00006aec 61000044	bsr.w	DrawBlock
00006af0 5801	addq.b	#4,d1
00006af2 0201007f	andi.b	#$7F,d1
00006af6 4cdf0030	movem.l	(sp)+,d4-d5
00006afa 06450010	addi.w	#16,d5
00006afe 51ceffe2	dbf	d6,.loop
00006b02 4e75	rts	
00006b04 7c0f	moveq	#((224+16+16)/16)-1,d6
00006b06 2e3c00800000	move.l	#$800000,d7
00006b0c 2200	move.l	d0,d1
00006b0e 48e70c00	movem.l	d4-d5,-(sp)
00006b12 610000c2	bsr.w	GetBlockData
00006b16 2001	move.l	d1,d0
00006b18 61000018	bsr.w	DrawBlock
00006b1c 06410100	addi.w	#$100,d1
00006b20 02410fff	andi.w	#$FFF,d1
00006b24 4cdf0030	movem.l	(sp)+,d4-d5
00006b28 06440010	addi.w	#16,d4
00006b2c 51ceffe0	dbf	d6,.loop
00006b30 4e75	rts	
00006b32 8042	or.w	d2,d0
00006b34 4840	swap	d0
00006b36 08100004	btst	#4,(a0)
00006b3a 6632	bne.s	DrawFlipY
00006b3c 08100003	btst	#3,(a0)
00006b40 660c	bne.s	DrawFlipX
00006b42 2a80	move.l	d0,(a5)
00006b44 2c99	move.l	(a1)+,(a6)
00006b46 d087	add.l	d7,d0
00006b48 2a80	move.l	d0,(a5)
00006b4a 2c99	move.l	(a1)+,(a6)
00006b4c 4e75	rts	
00006b4e 2a80	move.l	d0,(a5)
00006b50 2819	move.l	(a1)+,d4
00006b52 0a8408000800	eori.l	#$8000800,d4
00006b58 4844	swap	d4
00006b5a 2c84	move.l	d4,(a6)
00006b5c d087	add.l	d7,d0
00006b5e 2a80	move.l	d0,(a5)
00006b60 2819	move.l	(a1)+,d4
00006b62 0a8408000800	eori.l	#$8000800,d4
00006b68 4844	swap	d4
00006b6a 2c84	move.l	d4,(a6)
00006b6c 4e75	rts	
00006b6e 08100003	btst	#3,(a0)
00006b72 661c	bne.s	DrawFlipXY
00006b74 2a80	move.l	d0,(a5)
00006b76 2a19	move.l	(a1)+,d5
00006b78 2819	move.l	(a1)+,d4
00006b7a 0a8410001000	eori.l	#$10001000,d4
00006b80 2c84	move.l	d4,(a6)
00006b82 d087	add.l	d7,d0
00006b84 2a80	move.l	d0,(a5)
00006b86 0a8510001000	eori.l	#$10001000,d5
00006b8c 2c85	move.l	d5,(a6)
00006b8e 4e75	rts	
00006b90 2a80	move.l	d0,(a5)
00006b92 2a19	move.l	(a1)+,d5
00006b94 2819	move.l	(a1)+,d4
00006b96 0a8418001800	eori.l	#$18001800,d4
00006b9c 4844	swap	d4
00006b9e 2c84	move.l	d4,(a6)
00006ba0 d087	add.l	d7,d0
00006ba2 2a80	move.l	d0,(a5)
00006ba4 0a8518001800	eori.l	#$18001800,d5
00006baa 4845	swap	d5
00006bac 2c85	move.l	d5,(a6)
00006bae 4e75	rts	
00006bb0 4e75	rts	
00006bb2 2a80	move.l	d0,(a5)
00006bb4 3a3c2000	move.w	#$2000,d5
00006bb8 3819	move.w	(a1)+,d4
00006bba d845	add.w	d5,d4
00006bbc 3c84	move.w	d4,(a6)
00006bbe 3819	move.w	(a1)+,d4
00006bc0 d845	add.w	d5,d4
00006bc2 3c84	move.w	d4,(a6)
00006bc4 d087	add.l	d7,d0
00006bc6 2a80	move.l	d0,(a5)
00006bc8 3819	move.w	(a1)+,d4
00006bca d845	add.w	d5,d4
00006bcc 3c84	move.w	d4,(a6)
00006bce 3819	move.w	(a1)+,d4
00006bd0 d845	add.w	d5,d4
00006bd2 3c84	move.w	d4,(a6)
00006bd4 4e75	rts	
00006bd6 43f8b000	lea	(v_16x16).w,a1
00006bda d86b0004	add.w	4(a3),d4
00006bde da53	add.w	(a3),d5
00006be0 3604	move.w	d4,d3
00006be2 e24b	lsr.w	#1,d3
00006be4 02430380	andi.w	#$380,d3
00006be8 e64d	lsr.w	#3,d5
00006bea 3005	move.w	d5,d0
00006bec ea48	lsr.w	#5,d0
00006bee 0240007f	andi.w	#$7F,d0
00006bf2 d043	add.w	d3,d0
00006bf4 76ff	moveq	#-1,d3
00006bf6 16340000	move.b	(a4,d0.w),d3
00006bfa 6722	beq.s	locret_6C1E
00006bfc 5303	subq.b	#1,d3
00006bfe 0243007f	andi.w	#$7F,d3
00006c02 ee5b	ror.w	#7,d3
00006c04 d844	add.w	d4,d4
00006c06 024401e0	andi.w	#$1E0,d4
00006c0a 0245001e	andi.w	#$1E,d5
00006c0e d644	add.w	d4,d3
00006c10 d645	add.w	d5,d3
00006c12 2043	movea.l	d3,a0
00006c14 3610	move.w	(a0),d3
00006c16 024303ff	andi.w	#$3FF,d3
00006c1a e74b	lsl.w	#3,d3
00006c1c d2c3	adda.w	d3,a1
00006c1e 4e75	rts	
00006c20 d86b0004	add.w	4(a3),d4
00006c24 da53	add.w	(a3),d5
00006c26 024400f0	andi.w	#$F0,d4
00006c2a 024501f0	andi.w	#$1F0,d5
00006c2e e94c	lsl.w	#4,d4
00006c30 e44d	lsr.w	#2,d5
00006c32 d845	add.w	d5,d4
00006c34 7003	moveq	#3,d0
00006c36 4840	swap	d0
00006c38 3004	move.w	d4,d0
00006c3a 4e75	rts	
00006c3c d86b0004	add.w	4(a3),d4
00006c40 da53	add.w	(a3),d5
00006c42 024400f0	andi.w	#$F0,d4
00006c46 024501f0	andi.w	#$1F0,d5
00006c4a e94c	lsl.w	#4,d4
00006c4c e44d	lsr.w	#2,d5
00006c4e d845	add.w	d5,d4
00006c50 7002	moveq	#2,d0
00006c52 4840	swap	d0
00006c54 3004	move.w	d4,d0
00006c56 4e75	rts	
00006c58 4bf900c00004	lea	(vdp_control_port).l,a5
00006c5e 4df900c00000	lea	(vdp_data_port).l,a6
00006c64 47f8f700	lea	(v_screenposx).w,a3
00006c68 49f8a400	lea	(v_lvllayout_fg).w,a4
00006c6c 343c4000	move.w	#$4000,d2
00006c70 610c	bsr.s	DrawChunks
00006c72 47f8f708	lea	(v_bgscreenposx).w,a3
00006c76 49f8a440	lea	(v_lvllayout_bg).w,a4
00006c7a 343c6000	move.w	#$6000,d2
00006c7e 78f0	moveq	#-16,d4
00006c80 7c0f	moveq	#((224+16+16)/16)-1,d6
00006c82 48e70e00	movem.l	d4-d6,-(sp)
00006c86 7a00	moveq	#0,d5
00006c88 3204	move.w	d4,d1
00006c8a 6100ff94	bsr.w	Calc_VRAM_Pos
00006c8e 3801	move.w	d1,d4
00006c90 7a00	moveq	#0,d5
00006c92 7c1f	moveq	#(512/16)-1,d6
00006c94 6100fe44	bsr.w	DrawBlocks_LR_2
00006c98 4cdf0070	movem.l	(sp)+,d4-d6
00006c9c 06440010	addi.w	#16,d4
00006ca0 51ceffe0	dbf	d6,.loop
00006ca4 4e75	rts	
00006ca6 7000	moveq	#0,d0
00006ca8 1038fe10	move.b	(v_zone).w,d0
00006cac e948	lsl.w	#4,d0
00006cae 45f90001d5a2	lea	(LevelHeaders).l,a2
00006cb4 45f20000	lea	(a2,d0.w),a2
00006cb8 2f0a	move.l	a2,-(sp)
00006cba 588a	addq.l	#4,a2
00006cbc 205a	movea.l	(a2)+,a0
00006cbe 43f8b000	lea	(v_16x16).w,a1
00006cc2 303c0000	move.w	#ArtTile_Level,d0
00006cc6 6100aa56	bsr.w	EniDec
00006cca 205a	movea.l	(a2)+,a0
00006ccc 43f900ff0000	lea	(v_256x256).l,a1
00006cd2 6100abc8	bsr.w	KosDec
00006cd6 6100003a	bsr.w	LevelLayoutLoad
00006cda 301a	move.w	(a2)+,d0
00006cdc 3012	move.w	(a2),d0
00006cde 024000ff	andi.w	#$FF,d0
00006ce2 0c780103fe10	cmpi.w	#id_LZ_act4,(v_zone).w
00006ce8 6602	bne.s	.notSBZ3
00006cea 700c	moveq	#palid_SBZ3,d0
00006cec 0c780501fe10	cmpi.w	#id_SBZ_act2,(v_zone).w
00006cf2 6708	beq.s	.isSBZorFZ
00006cf4 0c780502fe10	cmpi.w	#id_FZ,(v_zone).w
00006cfa 6602	bne.s	.normalpal
00006cfc 700e	moveq	#palid_SBZ2,d0
00006cfe 6100b3fc	bsr.w	PalLoad_Fade
00006d02 245f	movea.l	(sp)+,a2
00006d04 584a	addq.w	#4,a2
00006d06 7000	moveq	#0,d0
00006d08 1012	move.b	(a2),d0
00006d0a 6704	beq.s	.skipPLC
00006d0c 6100a872	bsr.w	AddPLC
00006d10 4e75	rts	
00006d12 47f8a400	lea	(v_lvllayout).w,a3
00006d16 323c01ff	move.w	#(v_lvllayout_end-v_lvllayout)/2-1,d1
00006d1a 7000	moveq	#0,d0
00006d1c 26c0	move.l	d0,(a3)+
00006d1e 51c9fffc	dbf	d1,LevLoad_ClrRam
00006d22 47f8a400	lea	(v_lvllayout_fg).w,a3
00006d26 7200	moveq	#0,d1
00006d28 61000008	bsr.w	LevelLayoutLoad2
00006d2c 47f8a440	lea	(v_lvllayout_bg).w,a3
00006d30 7202	moveq	#2,d1
00006d32 3038fe10	move.w	(v_zone).w,d0
00006d36 ed08	lsl.b	#6,d0
00006d38 ea48	lsr.w	#5,d0
00006d3a 3400	move.w	d0,d2
00006d3c d040	add.w	d0,d0
00006d3e d042	add.w	d2,d0
00006d40 d041	add.w	d1,d0
00006d42 43f900068bd6	lea	(Level_Index).l,a1
00006d48 30310000	move.w	(a1,d0.w),d0
00006d4c 43f10000	lea	(a1,d0.w),a1
00006d50 7200	moveq	#0,d1
00006d52 3401	move.w	d1,d2
00006d54 1219	move.b	(a1)+,d1
00006d56 1419	move.b	(a1)+,d2
00006d58 3001	move.w	d1,d0
00006d5a 204b	movea.l	a3,a0
00006d5c 10d9	move.b	(a1)+,(a0)+
00006d5e 51c8fffc	dbf	d0,LevLoad_Row
00006d62 47eb0080	lea	layout_row(a3),a3
00006d66 51cafff0	dbf	d2,LevLoad_NumRows
00006d6a 4e75	rts	
00006d6c 7000	moveq	#0,d0
00006d6e 1038fe10	move.b	(v_zone).w,d0
00006d72 d040	add.w	d0,d0
00006d74 303b005a	move.w	DLE_Index(pc,d0.w),d0
00006d78 4ebb0056	jsr	DLE_Index(pc,d0.w)
00006d7c 7202	moveq	#2,d1
00006d7e 3038f726	move.w	(v_limitbtm1).w,d0
00006d82 9078f72e	sub.w	(v_limitbtm2).w,d0
00006d86 6722	beq.s	DLE_NoChg
00006d88 6422	bcc.s	loc_6DAC
00006d8a 4441	neg.w	d1
00006d8c 3038f704	move.w	(v_screenposy).w,d0
00006d90 b078f726	cmp.w	(v_limitbtm1).w,d0
00006d94 630a	bls.s	loc_6DA0
00006d96 31c0f72e	move.w	d0,(v_limitbtm2).w
00006d9a 0278fffef72e	andi.w	#$FFFE,(v_limitbtm2).w
00006da0 d378f72e	add.w	d1,(v_limitbtm2).w
00006da4 11fc0001f75c	move.b	#1,(f_bgscrollvert).w
00006daa 4e75	rts	
00006dac 3038f704	move.w	(v_screenposy).w,d0
00006db0 5040	addq.w	#8,d0
00006db2 b078f72e	cmp.w	(v_limitbtm2).w,d0
00006db6 650c	blo.s	loc_6DC4
00006db8 08380001d022	btst	#1,(v_player+obStatus).w
00006dbe 6704	beq.s	loc_6DC4
00006dc0 d241	add.w	d1,d1
00006dc2 d241	add.w	d1,d1
00006dc4 d378f72e	add.w	d1,(v_limitbtm2).w
00006dc8 11fc0001f75c	move.b	#1,(f_bgscrollvert).w
00006dce 4e75	rts	
00006dde 7000	moveq	#0,d0
00006de0 1038fe11	move.b	(v_act).w,d0
00006de4 d040	add.w	d0,d0
00006de6 303b0006	move.w	DLE_GHZx(pc,d0.w),d0
00006dea 4efb0002	jmp	DLE_GHZx(pc,d0.w)
00006df4 31fc0300f726	move.w	#$300,(v_limitbtm1).w
00006dfa 0c781780f700	cmpi.w	#$1780,(v_screenposx).w
00006e00 6506	blo.s	locret_6E08
00006e02 31fc0400f726	move.w	#$400,(v_limitbtm1).w
00006e08 4e75	rts	
00006e0a 31fc0300f726	move.w	#$300,(v_limitbtm1).w
00006e10 0c780ed0f700	cmpi.w	#$ED0,(v_screenposx).w
00006e16 6522	blo.s	locret_6E3A
00006e18 31fc0200f726	move.w	#$200,(v_limitbtm1).w
00006e1e 0c781600f700	cmpi.w	#$1600,(v_screenposx).w
00006e24 6514	blo.s	locret_6E3A
00006e26 31fc0400f726	move.w	#$400,(v_limitbtm1).w
00006e2c 0c781d60f700	cmpi.w	#$1D60,(v_screenposx).w
00006e32 6506	blo.s	locret_6E3A
00006e34 31fc0300f726	move.w	#$300,(v_limitbtm1).w
00006e3a 4e75	rts	
00006e3c 7000	moveq	#0,d0
00006e3e 1038f742	move.b	(v_dle_routine).w,d0
00006e42 303b0006	move.w	off_6E4A(pc,d0.w),d0
00006e46 4efb0002	jmp	off_6E4A(pc,d0.w)
00006e50 31fc0300f726	move.w	#$300,(v_limitbtm1).w
00006e56 0c780380f700	cmpi.w	#$380,(v_screenposx).w
00006e5c 6538	blo.s	locret_6E96
00006e5e 31fc0310f726	move.w	#$310,(v_limitbtm1).w
00006e64 0c780960f700	cmpi.w	#$960,(v_screenposx).w
00006e6a 652a	blo.s	locret_6E96
00006e6c 0c780280f704	cmpi.w	#$280,(v_screenposy).w
00006e72 6524	blo.s	loc_6E98
00006e74 31fc0400f726	move.w	#$400,(v_limitbtm1).w
00006e7a 0c781380f700	cmpi.w	#$1380,(v_screenposx).w
00006e80 640c	bhs.s	loc_6E8E
00006e82 31fc04c0f726	move.w	#$4C0,(v_limitbtm1).w
00006e88 31fc04c0f72e	move.w	#$4C0,(v_limitbtm2).w
00006e8e 0c781700f700	cmpi.w	#$1700,(v_screenposx).w
00006e94 6402	bhs.s	loc_6E98
00006e96 4e75	rts	
00006e98 31fc0300f726	move.w	#boss_ghz_y,(v_limitbtm1).w
00006e9e 5438f742	addq.b	#2,(v_dle_routine).w
00006ea2 4e75	rts	
00006ea4 0c780960f700	cmpi.w	#$960,(v_screenposx).w
00006eaa 6404	bhs.s	loc_6EB0
00006eac 5538f742	subq.b	#2,(v_dle_routine).w
00006eb0 0c782960f700	cmpi.w	#boss_ghz_x,(v_screenposx).w
00006eb6 6530	blo.s	locret_6EE8
00006eb8 61006bd2	bsr.w	FindFreeObj
00006ebc 6612	bne.s	loc_6ED0
00006ec4 337c2a600008	move.w	#boss_ghz_x+$100,obX(a1)
00006eca 337c0280000c	move.w	#boss_ghz_y-$80,obY(a1)
00006ed0 303c008c	move.w	#bgm_Boss,d0
00006ed4 6100a4c0	bsr.w	QueueSound1
00006ed8 11fc0001f7aa	move.b	#1,(f_lockscreen).w
00006ede 5438f742	addq.b	#2,(v_dle_routine).w
00006ee2 7011	moveq	#plcid_Boss,d0
00006ee4 6000a69a	bra.w	AddPLC
00006ee8 4e75	rts	
00006eea 31f8f700f728	move.w	(v_screenposx).w,(v_limitleft2).w
00006ef0 4e75	rts	
00006ef2 7000	moveq	#0,d0
00006ef4 1038fe11	move.b	(v_act).w,d0
00006ef8 d040	add.w	d0,d0
00006efa 303b0006	move.w	DLE_LZx(pc,d0.w),d0
00006efe 4efb0002	jmp	DLE_LZx(pc,d0.w)
00006f0a 4e75	rts	
00006f0c 4a38f7ef	tst.b	(f_switch+$F).w
00006f10 6716	beq.s	loc_6F28
00006f12 43f8a506	lea	(v_lvllayout_fg+((layout_row*2)+6)).w,a1
00006f16 0c110007	cmpi.b	#7,(a1)
00006f1a 670c	beq.s	loc_6F28
00006f1c 12bc0007	move.b	#7,(a1)
00006f20 303c00b7	move.w	#sfx_Rumbling,d0
00006f24 6100a476	bsr.w	QueueSound2
00006f28 4a38f742	tst.b	(v_dle_routine).w
00006f2c 6636	bne.s	locret_6F64
00006f2e 0c781ca0f700	cmpi.w	#boss_lz_x-$140,(v_screenposx).w
00006f34 652c	blo.s	locret_6F62
00006f36 0c780600f704	cmpi.w	#boss_lz_y+$540,(v_screenposy).w
00006f3c 6424	bhs.s	locret_6F62
00006f3e 61006b4c	bsr.w	FindFreeObj
00006f42 6606	bne.s	loc_6F4A
00006f4a 303c008c	move.w	#bgm_Boss,d0
00006f4e 6100a446	bsr.w	QueueSound1
00006f52 11fc0001f7aa	move.b	#1,(f_lockscreen).w
00006f58 5438f742	addq.b	#2,(v_dle_routine).w
00006f5c 7011	moveq	#plcid_Boss,d0
00006f5e 6000a620	bra.w	AddPLC
00006f62 4e75	rts	
00006f64 4e75	rts	
00006f66 0c780d00f700	cmpi.w	#$D00,(v_screenposx).w
00006f6c 651e	blo.s	locret_6F8C
00006f6e 0c780018d00c	cmpi.w	#$18,(v_player+obY).w
00006f74 6416	bhs.s	locret_6F8C
00006f76 4238fe30	clr.b	(v_lastlamp).w
00006f7a 31fc0001fe02	move.w	#1,(f_restart).w
00006f80 31fc0502fe10	move.w	#id_FZ,(v_zone).w
00006f86 11fc0001f7c8	move.b	#1,(f_playerctrl).w
00006f8c 4e75	rts	
00006f8e 7000	moveq	#0,d0
00006f90 1038fe11	move.b	(v_act).w,d0
00006f94 d040	add.w	d0,d0
00006f96 303b0006	move.w	DLE_MZx(pc,d0.w),d0
00006f9a 4efb0002	jmp	DLE_MZx(pc,d0.w)
00006fa4 7000	moveq	#0,d0
00006fa6 1038f742	move.b	(v_dle_routine).w,d0
00006faa 303b0006	move.w	off_6FB2(pc,d0.w),d0
00006fae 4efb0002	jmp	off_6FB2(pc,d0.w)
00006fba 31fc01d0f726	move.w	#$1D0,(v_limitbtm1).w
00006fc0 0c780700f700	cmpi.w	#$700,(v_screenposx).w
00006fc6 6520	blo.s	locret_6FE8
00006fc8 31fc0220f726	move.w	#$220,(v_limitbtm1).w
00006fce 0c780d00f700	cmpi.w	#$D00,(v_screenposx).w
00006fd4 6512	blo.s	locret_6FE8
00006fd6 31fc0340f726	move.w	#$340,(v_limitbtm1).w
00006fdc 0c780340f704	cmpi.w	#$340,(v_screenposy).w
00006fe2 6504	blo.s	locret_6FE8
00006fe4 5438f742	addq.b	#2,(v_dle_routine).w
00006fe8 4e75	rts	
00006fea 0c780340f704	cmpi.w	#$340,(v_screenposy).w
00006ff0 6406	bhs.s	loc_6FF8
00006ff2 5538f742	subq.b	#2,(v_dle_routine).w
00006ff6 4e75	rts	
00006ff8 31fc0000f72c	move.w	#0,(v_limittop2).w
00006ffe 0c780e00f700	cmpi.w	#$E00,(v_screenposx).w
00007004 6426	bhs.s	locret_702C
00007006 31fc0340f72c	move.w	#$340,(v_limittop2).w
0000700c 31fc0340f726	move.w	#$340,(v_limitbtm1).w
00007012 0c780a90f700	cmpi.w	#$A90,(v_screenposx).w
00007018 6412	bhs.s	locret_702C
0000701a 31fc0500f726	move.w	#$500,(v_limitbtm1).w
00007020 0c780370f704	cmpi.w	#$370,(v_screenposy).w
00007026 6504	blo.s	locret_702C
00007028 5438f742	addq.b	#2,(v_dle_routine).w
0000702c 4e75	rts	
0000702e 0c780370f704	cmpi.w	#$370,(v_screenposy).w
00007034 6406	bhs.s	loc_703C
00007036 5538f742	subq.b	#2,(v_dle_routine).w
0000703a 4e75	rts	
0000703c 0c780500f704	cmpi.w	#$500,(v_screenposy).w
00007042 650a	blo.s	locret_704E
00007044 31fc0500f72c	move.w	#$500,(v_limittop2).w
0000704a 5438f742	addq.b	#2,(v_dle_routine).w
0000704e 4e75	rts	
00007050 0c780e70f700	cmpi.w	#$E70,(v_screenposx).w
00007056 651a	blo.s	locret_7072
00007058 31fc0000f72c	move.w	#0,(v_limittop2).w
0000705e 31fc0500f726	move.w	#$500,(v_limitbtm1).w
00007064 0c781430f700	cmpi.w	#$1430,(v_screenposx).w
0000706a 6506	blo.s	locret_7072
0000706c 31fc0210f726	move.w	#$210,(v_limitbtm1).w
00007072 4e75	rts	
00007074 31fc0520f726	move.w	#$520,(v_limitbtm1).w
0000707a 0c781700f700	cmpi.w	#$1700,(v_screenposx).w
00007080 6506	blo.s	locret_7088
00007082 31fc0200f726	move.w	#$200,(v_limitbtm1).w
00007088 4e75	rts	
0000708a 7000	moveq	#0,d0
0000708c 1038f742	move.b	(v_dle_routine).w,d0
00007090 303b0006	move.w	off_7098(pc,d0.w),d0
00007094 4efb0002	jmp	off_7098(pc,d0.w)
0000709c 31fc0720f726	move.w	#$720,(v_limitbtm1).w
000070a2 0c781560f700	cmpi.w	#boss_mz_x-$2A0,(v_screenposx).w
000070a8 653e	blo.s	locret_70E8
000070aa 31fc0210f726	move.w	#boss_mz_y,(v_limitbtm1).w
000070b0 0c7817f0f700	cmpi.w	#boss_mz_x-$10,(v_screenposx).w
000070b6 6530	blo.s	locret_70E8
000070b8 610069d2	bsr.w	FindFreeObj
000070bc 6612	bne.s	loc_70D0
000070c4 337c19f00008	move.w	#boss_mz_x+$1F0,obX(a1)
000070ca 337c022c000c	move.w	#boss_mz_y+$1C,obY(a1)
000070d0 303c008c	move.w	#bgm_Boss,d0
000070d4 6100a2c0	bsr.w	QueueSound1
000070d8 11fc0001f7aa	move.b	#1,(f_lockscreen).w
000070de 5438f742	addq.b	#2,(v_dle_routine).w
000070e2 7011	moveq	#plcid_Boss,d0
000070e4 6000a49a	bra.w	AddPLC
000070e8 4e75	rts	
000070ea 31f8f700f728	move.w	(v_screenposx).w,(v_limitleft2).w
000070f0 4e75	rts	
000070f2 7000	moveq	#0,d0
000070f4 1038fe11	move.b	(v_act).w,d0
000070f8 d040	add.w	d0,d0
000070fa 303b0006	move.w	DLE_SLZx(pc,d0.w),d0
000070fe 4efb0002	jmp	DLE_SLZx(pc,d0.w)
00007108 4e75	rts	
0000710a 7000	moveq	#0,d0
0000710c 1038f742	move.b	(v_dle_routine).w,d0
00007110 303b0006	move.w	off_7118(pc,d0.w),d0
00007114 4efb0002	jmp	off_7118(pc,d0.w)
0000711e 0c781e70f700	cmpi.w	#boss_slz_x-$190,(v_screenposx).w
00007124 650a	blo.s	locret_7130
00007126 31fc0210f726	move.w	#boss_slz_y,(v_limitbtm1).w
0000712c 5438f742	addq.b	#2,(v_dle_routine).w
00007130 4e75	rts	
00007132 0c782000f700	cmpi.w	#boss_slz_x,(v_screenposx).w
00007138 6522	blo.s	locret_715C
0000713a 61006950	bsr.w	FindFreeObj
0000713e 6604	bne.s	loc_7144
00007140 12bc007a	move.b	#id_BossStarLight,obID(a1)
00007144 303c008c	move.w	#bgm_Boss,d0
00007148 6100a24c	bsr.w	QueueSound1
0000714c 11fc0001f7aa	move.b	#1,(f_lockscreen).w
00007152 5438f742	addq.b	#2,(v_dle_routine).w
00007156 7011	moveq	#plcid_Boss,d0
00007158 6000a426	bra.w	AddPLC
0000715c 4e75	rts	
0000715e 31f8f700f728	move.w	(v_screenposx).w,(v_limitleft2).w
00007164 4e75	rts	
00007166 4e75	rts	
00007168 7000	moveq	#0,d0
0000716a 1038fe11	move.b	(v_act).w,d0
0000716e d040	add.w	d0,d0
00007170 303b0006	move.w	DLE_SYZx(pc,d0.w),d0
00007174 4efb0002	jmp	DLE_SYZx(pc,d0.w)
0000717e 4e75	rts	
00007180 31fc0520f726	move.w	#$520,(v_limitbtm1).w
00007186 0c7825a0f700	cmpi.w	#$25A0,(v_screenposx).w
0000718c 6514	blo.s	locret_71A2
0000718e 31fc0420f726	move.w	#$420,(v_limitbtm1).w
00007194 0c7804d0d00c	cmpi.w	#$4D0,(v_player+obY).w
0000719a 6506	blo.s	locret_71A2
0000719c 31fc0520f726	move.w	#$520,(v_limitbtm1).w
000071a2 4e75	rts	
000071a4 7000	moveq	#0,d0
000071a6 1038f742	move.b	(v_dle_routine).w,d0
000071aa 303b0006	move.w	off_71B2(pc,d0.w),d0
000071ae 4efb0002	jmp	off_71B2(pc,d0.w)
000071b8 0c782ac0f700	cmpi.w	#boss_syz_x-$140,(v_screenposx).w
000071be 650e	blo.s	locret_71CE
000071c0 610068ca	bsr.w	FindFreeObj
000071c4 6608	bne.s	locret_71CE
000071c6 12bc0076	move.b	#id_BossBlock,obID(a1)
000071ca 5438f742	addq.b	#2,(v_dle_routine).w
000071ce 4e75	rts	
000071d0 0c782c00f700	cmpi.w	#boss_syz_x,(v_screenposx).w
000071d6 6528	blo.s	locret_7200
000071d8 31fc04ccf726	move.w	#boss_syz_y,(v_limitbtm1).w
000071de 610068ac	bsr.w	FindFreeObj
000071e2 6608	bne.s	loc_71EC
000071e4 12bc0075	move.b	#id_BossSpringYard,obID(a1)
000071e8 5438f742	addq.b	#2,(v_dle_routine).w
000071ec 303c008c	move.w	#bgm_Boss,d0
000071f0 6100a1a4	bsr.w	QueueSound1
000071f4 11fc0001f7aa	move.b	#1,(f_lockscreen).w
000071fa 7011	moveq	#plcid_Boss,d0
000071fc 6000a382	bra.w	AddPLC
00007200 4e75	rts	
00007202 31f8f700f728	move.w	(v_screenposx).w,(v_limitleft2).w
00007208 4e75	rts	
0000720a 7000	moveq	#0,d0
0000720c 1038fe11	move.b	(v_act).w,d0
00007210 d040	add.w	d0,d0
00007212 303b0006	move.w	DLE_SBZx(pc,d0.w),d0
00007216 4efb0002	jmp	DLE_SBZx(pc,d0.w)
00007220 31fc0720f726	move.w	#$720,(v_limitbtm1).w
00007226 0c781880f700	cmpi.w	#$1880,(v_screenposx).w
0000722c 6514	blo.s	locret_7242
0000722e 31fc0620f726	move.w	#$620,(v_limitbtm1).w
00007234 0c782000f700	cmpi.w	#$2000,(v_screenposx).w
0000723a 6506	blo.s	locret_7242
0000723c 31fc02a0f726	move.w	#$2A0,(v_limitbtm1).w
00007242 4e75	rts	
00007244 7000	moveq	#0,d0
00007246 1038f742	move.b	(v_dle_routine).w,d0
0000724a 303b0006	move.w	off_7252(pc,d0.w),d0
0000724e 4efb0002	jmp	off_7252(pc,d0.w)
0000725a 31fc0800f726	move.w	#$800,(v_limitbtm1).w
00007260 0c781800f700	cmpi.w	#$1800,(v_screenposx).w
00007266 6512	blo.s	locret_727A
00007268 31fc0510f726	move.w	#boss_sbz2_y,(v_limitbtm1).w
0000726e 0c781e00f700	cmpi.w	#$1E00,(v_screenposx).w
00007274 6504	blo.s	locret_727A
00007276 5438f742	addq.b	#2,(v_dle_routine).w
0000727a 4e75	rts	
0000727c 0c781eb0f700	cmpi.w	#boss_sbz2_x-$1A0,(v_screenposx).w
00007282 6514	blo.s	locret_7298
00007284 61006806	bsr.w	FindFreeObj
00007288 660e	bne.s	locret_7298
0000728a 12bc0083	move.b	#id_FalseFloor,obID(a1)
0000728e 5438f742	addq.b	#2,(v_dle_routine).w
00007292 701e	moveq	#plcid_EggmanSBZ2,d0
00007294 6000a2ea	bra.w	AddPLC
00007298 4e75	rts	
0000729a 0c781f60f700	cmpi.w	#boss_sbz2_x-$F0,(v_screenposx).w
000072a0 6514	blo.s	loc_72B6
000072a2 610067e8	bsr.w	FindFreeObj
000072a6 6608	bne.s	loc_72B0
000072a8 12bc0082	move.b	#id_ScrapEggman,obID(a1)
000072ac 5438f742	addq.b	#2,(v_dle_routine).w
000072b0 11fc0001f7aa	move.b	#1,(f_lockscreen).w
000072b6 600a	bra.s	loc_72C2
000072b8 0c782050f700	cmpi.w	#boss_sbz2_x,(v_screenposx).w
000072be 6502	blo.s	loc_72C2
000072c0 4e75	rts	
000072c2 31f8f700f728	move.w	(v_screenposx).w,(v_limitleft2).w
000072c8 4e75	rts	
000072ca 7000	moveq	#0,d0
000072cc 1038f742	move.b	(v_dle_routine).w,d0
000072d0 303b0006	move.w	off_72D8(pc,d0.w),d0
000072d4 4efb0002	jmp	off_72D8(pc,d0.w)
000072e2 0c782148f700	cmpi.w	#boss_fz_x-$308,(v_screenposx).w
000072e8 650a	blo.s	loc_72F4
000072ea 5438f742	addq.b	#2,(v_dle_routine).w
000072ee 701f	moveq	#plcid_FZBoss,d0
000072f0 6100a28e	bsr.w	AddPLC
000072f4 60cc	bra.s	loc_72C2
000072f6 0c782300f700	cmpi.w	#boss_fz_x-$150,(v_screenposx).w
000072fc 6514	blo.s	loc_7312
000072fe 6100678c	bsr.w	FindFreeObj
00007302 660e	bne.s	loc_7312
00007304 12bc0085	move.b	#id_BossFinal,obID(a1)
00007308 5438f742	addq.b	#2,(v_dle_routine).w
0000730c 11fc0001f7aa	move.b	#1,(f_lockscreen).w
00007312 60ae	bra.s	loc_72C2
00007314 0c782450f700	cmpi.w	#boss_fz_x,(v_screenposx).w
0000731a 6504	blo.s	loc_7320
0000731c 5438f742	addq.b	#2,(v_dle_routine).w
00007320 60a0	bra.s	loc_72C2
00007322 4e75	rts	
00007324 609c	bra.s	loc_72C2
00007326 4e75	rts	
00007328 7000	moveq	#0,d0
0000732a 10280024	move.b	obRoutine(a0),d0
0000732e 323b0006	move.w	Bri_Index(pc,d0.w),d1
00007332 4efb1002	jmp	Bri_Index(pc,d1.w)
00007342 54280024	addq.b	#2,obRoutine(a0)
00007346 217c000079340004	move.l	#Map_Bri,obMap(a0)
0000734e 317c438e0002	move.w	#ArtTile_GHZ_Bridge|Tile_Pal3,obGfx(a0)
00007354 117c00040001	move.b	#4,obRender(a0)
0000735a 117c00030018	move.b	#3,obPriority(a0)
00007360 117c00800019	move.b	#$80,obActWid(a0)
00007366 3428000c	move.w	obY(a0),d2
0000736a 36280008	move.w	obX(a0),d3
00007372 45e80028	lea	obSubtype(a0),a2
00007376 7200	moveq	#0,d1
00007378 1212	move.b	(a2),d1
0000737a 14fc0000	move.b	#0,(a2)+
0000737e 3001	move.w	d1,d0
00007380 e248	lsr.w	#1,d0
00007382 e948	lsl.w	#4,d0
00007384 9640	sub.w	d0,d3
00007386 5501	subq.b	#2,d1
00007388 657a	bcs.s	Bri_Action
0000738a 61006700	bsr.w	FindFreeObj
0000738e 6674	bne.s	Bri_Action
00007390 52280028	addq.b	#1,obSubtype(a0)
00007394 b6680008	cmp.w	obX(a0),d3
00007398 661e	bne.s	.notleftmost
0000739a 06430010	addi.w	#$10,d3
0000739e 3142000c	move.w	d2,obY(a0)
000073a2 3142003c	move.w	d2,objoff_3C(a0)
000073a6 3a08	move.w	a0,d5
000073a8 0445d000	subi.w	#v_objspace&$FFFF,d5
000073ac ec4d	lsr.w	#object_size_bits,d5
000073ae 0245007f	andi.w	#$7F,d5
000073b2 14c5	move.b	d5,(a2)+
000073b4 52280028	addq.b	#1,obSubtype(a0)
000073b8 3a09	move.w	a1,d5
000073ba 0445d000	subi.w	#v_objspace&$FFFF,d5
000073be ec4d	lsr.w	#object_size_bits,d5
000073c0 0245007f	andi.w	#$7F,d5
000073c4 14c5	move.b	d5,(a2)+
000073c6 137c000a0024	move.b	#$A,obRoutine(a1)
000073d0 3342000c	move.w	d2,obY(a1)
000073d4 3342003c	move.w	d2,objoff_3C(a1)
000073d8 33430008	move.w	d3,obX(a1)
000073dc 237c000079340004	move.l	#Map_Bri,obMap(a1)
000073e4 337c438e0002	move.w	#ArtTile_GHZ_Bridge|Tile_Pal3,obGfx(a1)
000073ea 137c00040001	move.b	#4,obRender(a1)
000073f0 137c00030018	move.b	#3,obPriority(a1)
000073f6 137c00080019	move.b	#8,obActWid(a1)
000073fc 06430010	addi.w	#$10,d3
00007400 51c9ff88	dbf	d1,.buildloop
00007404 6116	bsr.s	Bri_Solid
00007406 4a28003e	tst.b	objoff_3E(a0)
0000740a 6708	beq.s	.display
0000740c 5928003e	subq.b	#4,objoff_3E(a0)
00007410 6100020e	bsr.w	Bri_Bend
00007414 610061ee	bsr.w	DisplaySprite
00007418 600004c2	bra.w	Bri_ChkDel
0000741c 7200	moveq	#0,d1
0000741e 12280028	move.b	obSubtype(a0),d1
00007422 e749	lsl.w	#3,d1
00007424 3401	move.w	d1,d2
00007426 5041	addq.w	#8,d1
00007428 d442	add.w	d2,d2
0000742a 43f8d000	lea	(v_player).w,a1
0000742e 4a690012	tst.w	obVelY(a1)
00007432 6b0000ea	bmi.w	Plat_Exit
00007436 30290008	move.w	obX(a1),d0
0000743a 90680008	sub.w	obX(a0),d0
0000743e d041	add.w	d1,d0
00007440 6b0000dc	bmi.w	Plat_Exit
00007444 b042	cmp.w	d2,d0
00007446 640000d6	bhs.w	Plat_Exit
0000744a 6022	bra.s	Plat_NoXCheck
0000744c 43f8d000	lea	(v_player).w,a1
00007450 4a690012	tst.w	obVelY(a1)
00007454 6b0000c8	bmi.w	Plat_Exit
00007458 30290008	move.w	obX(a1),d0
0000745c 90680008	sub.w	obX(a0),d0
00007460 d041	add.w	d1,d0
00007462 6b0000ba	bmi.w	Plat_Exit
00007466 d241	add.w	d1,d1
00007468 b041	cmp.w	d1,d0
0000746a 640000b2	bhs.w	Plat_Exit
0000746e 3028000c	move.w	obY(a0),d0
00007472 5140	subq.w	#8,d0
00007474 3429000c	move.w	obY(a1),d2
00007478 12290016	move.b	obHeight(a1),d1
0000747c 4881	ext.w	d1
0000747e d242	add.w	d2,d1
00007480 5841	addq.w	#4,d1
00007482 9041	sub.w	d1,d0
00007484 62000098	bhi.w	Plat_Exit
00007488 0c40fff0	cmpi.w	#-$10,d0
0000748c 65000090	blo.w	Plat_Exit
00007490 4a38f7c8	tst.b	(f_playerctrl).w
00007494 6b000088	bmi.w	Plat_Exit
00007498 0c2900060024	cmpi.b	#6,obRoutine(a1)
0000749e 6400007e	bhs.w	Plat_Exit
000074a2 d440	add.w	d0,d2
000074a4 5642	addq.w	#3,d2
000074a6 3342000c	move.w	d2,obY(a1)
000074aa 54280024	addq.b	#2,obRoutine(a0)
000074ae 082900030022	btst	#3,obStatus(a1)
000074b4 6726	beq.s	loc_74DC
000074b6 7000	moveq	#0,d0
000074b8 1029003d	move.b	standonobject(a1),d0
000074bc ed48	lsl.w	#object_size_bits,d0
000074be 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
000074c4 2440	movea.l	d0,a2
000074c6 08aa00030022	bclr	#3,obStatus(a2)
000074cc 422a0025	clr.b	ob2ndRout(a2)
000074d0 0c2a00040024	cmpi.b	#4,obRoutine(a2)
000074d6 6604	bne.s	loc_74DC
000074d8 552a0024	subq.b	#2,obRoutine(a2)
000074dc 3008	move.w	a0,d0
000074de 0440d000	subi.w	#v_objspace&$FFFF,d0
000074e2 ec48	lsr.w	#object_size_bits,d0
000074e4 0240007f	andi.w	#$7F,d0
000074e8 1340003d	move.b	d0,standonobject(a1)
000074ec 137c00000026	move.b	#0,obAngle(a1)
000074f2 337c00000012	move.w	#0,obVelY(a1)
000074f8 336900100014	move.w	obVelX(a1),obInertia(a1)
000074fe 082900010022	btst	#1,obStatus(a1)
00007504 670c	beq.s	loc_7512
00007506 2f08	move.l	a0,-(sp)
00007508 2049	movea.l	a1,a0
0000750a 4eb9000137a0	jsr	(Sonic_ResetOnFloor).l
00007510 205f	movea.l	(sp)+,a0
00007512 08e900030022	bset	#3,obStatus(a1)
00007518 08e800030022	bset	#3,obStatus(a0)
0000751e 4e75	rts	
00007520 43f8d000	lea	(v_player).w,a1
00007524 4a690012	tst.w	obVelY(a1)
00007528 6b00fff4	bmi.w	Plat_Exit
0000752c 30290008	move.w	obX(a1),d0
00007530 90680008	sub.w	obX(a0),d0
00007534 d041	add.w	d1,d0
00007536 6be6	bmi.s	Plat_Exit
00007538 d241	add.w	d1,d1
0000753a b041	cmp.w	d1,d0
0000753c 64e0	bhs.s	Plat_Exit
0000753e 082800000001	btst	#0,obRender(a0)
00007544 6704	beq.s	loc_754A
00007546 4640	not.w	d0
00007548 d041	add.w	d1,d0
0000754a e248	lsr.w	#1,d0
0000754c 7600	moveq	#0,d3
0000754e 16320000	move.b	(a2,d0.w),d3
00007552 3028000c	move.w	obY(a0),d0
00007556 9043	sub.w	d3,d0
00007558 6000ff1a	bra.w	Platform3
0000755c 43f8d000	lea	(v_player).w,a1
00007560 4a690012	tst.w	obVelY(a1)
00007564 6b00ffb8	bmi.w	Plat_Exit
00007568 30290008	move.w	obX(a1),d0
0000756c 90680008	sub.w	obX(a0),d0
00007570 d041	add.w	d1,d0
00007572 6b00ffaa	bmi.w	Plat_Exit
00007576 d241	add.w	d1,d1
00007578 b041	cmp.w	d1,d0
0000757a 6400ffa2	bhs.w	Plat_Exit
0000757e 3028000c	move.w	obY(a0),d0
00007582 9043	sub.w	d3,d0
00007584 6000feee	bra.w	Platform3
00007588 6108	bsr.s	Bri_WalkOff
0000758a 61006078	bsr.w	DisplaySprite
0000758e 6000034c	bra.w	Bri_ChkDel
00007592 7200	moveq	#0,d1
00007594 12280028	move.b	obSubtype(a0),d1
00007598 e749	lsl.w	#3,d1
0000759a 3401	move.w	d1,d2
0000759c 5041	addq.w	#8,d1
0000759e 6122	bsr.s	ExitPlatform2
000075a0 641c	bcc.s	locret_75BE
000075a2 e848	lsr.w	#4,d0
000075a4 1140003f	move.b	d0,objoff_3F(a0)
000075a8 1028003e	move.b	objoff_3E(a0),d0
000075ac 0c000040	cmpi.b	#$40,d0
000075b0 6704	beq.s	loc_75B6
000075b2 5828003e	addq.b	#4,objoff_3E(a0)
000075b6 61000068	bsr.w	Bri_Bend
000075ba 61000038	bsr.w	Bri_MoveSonic
000075be 4e75	rts	
000075c0 3401	move.w	d1,d2
000075c2 d442	add.w	d2,d2
000075c4 43f8d000	lea	(v_player).w,a1
000075c8 082900010022	btst	#1,obStatus(a1)
000075ce 6610	bne.s	loc_75E0
000075d0 30290008	move.w	obX(a1),d0
000075d4 90680008	sub.w	obX(a0),d0
000075d8 d041	add.w	d1,d0
000075da 6b04	bmi.s	loc_75E0
000075dc b042	cmp.w	d2,d0
000075de 6512	blo.s	locret_75F2
000075e0 08a900030022	bclr	#3,obStatus(a1)
000075e6 117c00020024	move.b	#2,obRoutine(a0)
000075ec 08a800030022	bclr	#3,obStatus(a0)
000075f2 4e75	rts	
000075f4 7000	moveq	#0,d0
000075f6 1028003f	move.b	objoff_3F(a0),d0
000075fa 10300029	move.b	objoff_29(a0,d0.w),d0
000075fe ed48	lsl.w	#object_size_bits,d0
00007600 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00007606 2440	movea.l	d0,a2
00007608 43f8d000	lea	(v_player).w,a1
0000760c 302a000c	move.w	obY(a2),d0
00007610 5140	subq.w	#8,d0
00007612 7200	moveq	#0,d1
00007614 12290016	move.b	obHeight(a1),d1
00007618 9041	sub.w	d1,d0
0000761a 3340000c	move.w	d0,obY(a1)
0000761e 4e75	rts	
00007620 1028003e	move.b	objoff_3E(a0),d0
00007624 6100b3b4	bsr.w	CalcSine
00007628 3800	move.w	d0,d4
0000762a 49f9000077dc	lea	(Obj11_BendData2).l,a4
00007630 7000	moveq	#0,d0
00007632 10280028	move.b	obSubtype(a0),d0
00007636 e948	lsl.w	#4,d0
00007638 7600	moveq	#0,d3
0000763a 1628003f	move.b	objoff_3F(a0),d3
0000763e 3403	move.w	d3,d2
00007640 d640	add.w	d0,d3
00007642 7a00	moveq	#0,d5
00007644 4bf9000076cc	lea	(Obj11_BendData).l,a5
0000764a 1a353000	move.b	(a5,d3.w),d5
0000764e 0243000f	andi.w	#$F,d3
00007652 e94b	lsl.w	#4,d3
00007654 47f43000	lea	(a4,d3.w),a3
00007658 45e80029	lea	objoff_29(a0),a2
0000765c 7000	moveq	#0,d0
0000765e 101a	move.b	(a2)+,d0
00007660 ed48	lsl.w	#object_size_bits,d0
00007662 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00007668 2240	movea.l	d0,a1
0000766a 7000	moveq	#0,d0
0000766c 101b	move.b	(a3)+,d0
0000766e 5240	addq.w	#1,d0
00007670 c0c5	mulu.w	d5,d0
00007672 c0c4	mulu.w	d4,d0
00007674 4840	swap	d0
00007676 d069003c	add.w	objoff_3C(a1),d0
0000767a 3340000c	move.w	d0,obY(a1)
0000767e 51caffdc	dbf	d2,loc_765C
00007682 7000	moveq	#0,d0
00007684 10280028	move.b	obSubtype(a0),d0
00007688 7600	moveq	#0,d3
0000768a 1628003f	move.b	objoff_3F(a0),d3
0000768e 5203	addq.b	#1,d3
00007690 9600	sub.b	d0,d3
00007692 4403	neg.b	d3
00007694 6b34	bmi.s	locret_76CA
00007696 3403	move.w	d3,d2
00007698 e94b	lsl.w	#4,d3
0000769a 47f43000	lea	(a4,d3.w),a3
0000769e d6c2	adda.w	d2,a3
000076a0 5342	subq.w	#1,d2
000076a2 6526	bcs.s	locret_76CA
000076a4 7000	moveq	#0,d0
000076a6 101a	move.b	(a2)+,d0
000076a8 ed48	lsl.w	#object_size_bits,d0
000076aa 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
000076b0 2240	movea.l	d0,a1
000076b2 7000	moveq	#0,d0
000076b4 1023	move.b	-(a3),d0
000076b6 5240	addq.w	#1,d0
000076b8 c0c5	mulu.w	d5,d0
000076ba c0c4	mulu.w	d4,d0
000076bc 4840	swap	d0
000076be d069003c	add.w	objoff_3C(a1),d0
000076c2 3340000c	move.w	d0,obY(a1)
000076c6 51caffdc	dbf	d2,loc_76A4
000076ca 4e75	rts	
000078dc 30280008	move.w	obX(a0),d0
000078e0 0240ff80	andi.w	#$FF80,d0
000078e4 3238f700	move.w	(v_screenposx).w,d1
000078e8 04410080	subi.w	#128,d1
000078ec 0241ff80	andi.w	#$FF80,d1
000078f0 9041	sub.w	d1,d0
000078f2 0c400280	cmpi.w	#128+320+192,d0
000078f6 62000004	bhi.w	.deletebridge
000078fa 4e75	rts	
000078fc 7400	moveq	#0,d2
000078fe 45e80028	lea	obSubtype(a0),a2
00007902 141a	move.b	(a2)+,d2
00007904 5302	subq.b	#1,d2
00007906 651a	bcs.s	.delparent
00007908 7000	moveq	#0,d0
0000790a 101a	move.b	(a2)+,d0
0000790c ed48	lsl.w	#object_size_bits,d0
0000790e 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00007914 2240	movea.l	d0,a1
00007916 b048	cmp.w	a0,d0
00007918 6704	beq.s	.skipdel
0000791a 61005d26	bsr.w	DeleteChild
0000791e 51caffe8	dbf	d2,.loop
00007922 61005d1c	bsr.w	DeleteObject
00007926 4e75	rts	
00007928 61005d16	bsr.w	DeleteObject
0000792c 4e75	rts	
0000792e 61005cd4	bsr.w	DisplaySprite
00007932 4e75	rts	
00007952 7000	moveq	#0,d0
00007954 10280024	move.b	obRoutine(a0),d0
00007958 323b0006	move.w	Swing_Index(pc,d0.w),d1
0000795c 4efb1002	jmp	Swing_Index(pc,d1.w)
0000796e 54280024	addq.b	#2,obRoutine(a0)
00007972 217c00007c480004	move.l	#Map_Swing_GHZ,obMap(a0)
0000797a 317c43800002	move.w	#ArtTile_GHZ_MZ_Swing|Tile_Pal3,obGfx(a0)
00007980 117c00040001	move.b	#4,obRender(a0)
00007986 117c00030018	move.b	#3,obPriority(a0)
0000798c 117c00180019	move.b	#$18,obActWid(a0)
00007992 117c00080016	move.b	#8,obHeight(a0)
00007998 3168000c0038	move.w	obY(a0),swing_origY(a0)
0000799e 31680008003a	move.w	obX(a0),swing_origX(a0)
000079a4 0c380003fe10	cmpi.b	#id_SLZ,(v_zone).w
000079aa 6620	bne.s	.notSLZ
000079ac 217c00007c660004	move.l	#Map_Swing_SLZ,obMap(a0)
000079b4 317c43dc0002	move.w	#ArtTile_SLZ_Swing|Tile_Pal3,obGfx(a0)
000079ba 117c00200019	move.b	#$20,obActWid(a0)
000079c0 117c00100016	move.b	#$10,obHeight(a0)
000079c6 117c00990020	move.b	#$99,obColType(a0)
000079cc 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
000079d2 6626	bne.s	.length
000079d4 217c00010aa00004	move.l	#Map_BBall,obMap(a0)
000079dc 317c03910002	move.w	#ArtTile_SBZ_Swing,obGfx(a0)
000079e2 117c00180019	move.b	#$18,obActWid(a0)
000079e8 117c00180016	move.b	#$18,obHeight(a0)
000079ee 117c00860020	move.b	#$86,obColType(a0)
000079f4 117c000c0024	move.b	#$C,obRoutine(a0)
000079fe 7200	moveq	#0,d1
00007a00 45e80028	lea	obSubtype(a0),a2
00007a04 1212	move.b	(a2),d1
00007a06 3f01	move.w	d1,-(sp)
00007a08 0241000f	andi.w	#$F,d1
00007a0c 14fc0000	move.b	#0,(a2)+
00007a10 3601	move.w	d1,d3
00007a12 e94b	lsl.w	#4,d3
00007a14 5003	addq.b	#8,d3
00007a16 1143003c	move.b	d3,objoff_3C(a0)
00007a1a 5103	subq.b	#8,d3
00007a1c 4a28001a	tst.b	obFrame(a0)
00007a20 6704	beq.s	.makechain
00007a22 5003	addq.b	#8,d3
00007a24 5341	subq.w	#1,d1
00007a26 61006064	bsr.w	FindFreeObj
00007a2a 6666	bne.s	.fail
00007a2c 52280028	addq.b	#1,obSubtype(a0)
00007a30 3a09	move.w	a1,d5
00007a32 0445d000	subi.w	#v_objspace&$FFFF,d5
00007a36 ec4d	lsr.w	#object_size_bits,d5
00007a38 0245007f	andi.w	#$7F,d5
00007a3c 14c5	move.b	d5,(a2)+
00007a3e 137c000a0024	move.b	#$A,obRoutine(a1)
00007a48 236800040004	move.l	obMap(a0),obMap(a1)
00007a4e 336800020002	move.w	obGfx(a0),obGfx(a1)
00007a54 08a900060002	bclr	#6,obGfx(a1)
00007a5a 137c00040001	move.b	#4,obRender(a1)
00007a60 137c00040018	move.b	#4,obPriority(a1)
00007a66 137c00080019	move.b	#8,obActWid(a1)
00007a6c 137c0001001a	move.b	#1,obFrame(a1)
00007a72 1343003c	move.b	d3,objoff_3C(a1)
00007a76 04030010	subi.b	#$10,d3
00007a7a 6412	bcc.s	.notanchor
00007a7c 137c0002001a	move.b	#2,obFrame(a1)
00007a82 137c00030018	move.b	#3,obPriority(a1)
00007a88 08e900060002	bset	#6,obGfx(a1)
00007a8e 51c9ff96	dbf	d1,.makechain
00007a92 3a08	move.w	a0,d5
00007a94 0445d000	subi.w	#v_objspace&$FFFF,d5
00007a98 ec4d	lsr.w	#object_size_bits,d5
00007a9a 0245007f	andi.w	#$7F,d5
00007a9e 14c5	move.b	d5,(a2)+
00007aa0 317c40800026	move.w	#$4080,obAngle(a0)
00007aa6 317cfe00003e	move.w	#-$200,objoff_3E(a0)
00007aac 321f	move.w	(sp)+,d1
00007aae 08010004	btst	#4,d1
00007ab2 6720	beq.s	.not1X
00007ab4 217c000081aa0004	move.l	#Map_GBall,obMap(a0)
00007abc 317c43aa0002	move.w	#ArtTile_GHZ_Giant_Ball|Tile_Pal3,obGfx(a0)
00007ac2 117c0001001a	move.b	#1,obFrame(a0)
00007ac8 117c00020018	move.b	#2,obPriority(a0)
00007ace 117c00810020	move.b	#$81,obColType(a0)
00007ad4 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
00007ada 6710	beq.s	Swing_Action
00007adc 7200	moveq	#0,d1
00007ade 12280019	move.b	obActWid(a0),d1
00007ae2 7600	moveq	#0,d3
00007ae4 16280016	move.b	obHeight(a0),d3
00007ae8 6100fa72	bsr.w	Swing_Solid
00007aec 61000076	bsr.w	Swing_Move
00007af0 61005b12	bsr.w	DisplaySprite
00007af4 60000108	bra.w	Swing_ChkDel
00007af8 7200	moveq	#0,d1
00007afa 12280019	move.b	obActWid(a0),d1
00007afe 6100fac0	bsr.w	ExitPlatform
00007b02 3f280008	move.w	obX(a0),-(sp)
00007b06 6100005c	bsr.w	Swing_Move
00007b0a 341f	move.w	(sp)+,d2
00007b0c 7600	moveq	#0,d3
00007b0e 16280016	move.b	obHeight(a0),d3
00007b12 5203	addq.b	#1,d3
00007b14 6100000c	bsr.w	MvSonicOnPtfm
00007b18 61005aea	bsr.w	DisplaySprite
00007b1c 600000e0	bra.w	Swing_ChkDel
00007b20 4e75	rts	
00007b22 43f8d000	lea	(v_player).w,a1
00007b26 3028000c	move.w	obY(a0),d0
00007b2a 9043	sub.w	d3,d0
00007b2c 600c	bra.s	MvSonic2
00007b2e 43f8d000	lea	(v_player).w,a1
00007b32 3028000c	move.w	obY(a0),d0
00007b36 04400009	subi.w	#9,d0
00007b3a 4a38f7c8	tst.b	(f_playerctrl).w
00007b3e 6b22	bmi.s	.return
00007b40 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00007b46 641a	bhs.s	.return
00007b48 4a78fe08	tst.w	(v_debuguse).w
00007b4c 6614	bne.s	.return
00007b4e 7200	moveq	#0,d1
00007b50 12290016	move.b	obHeight(a1),d1
00007b54 9041	sub.w	d1,d0
00007b56 3340000c	move.w	d0,obY(a1)
00007b5a 94680008	sub.w	obX(a0),d2
00007b5e 95690008	sub.w	d2,obX(a1)
00007b62 4e75	rts	
00007b64 1038fe78	move.b	(v_oscillate+$1A).w,d0
00007b68 323c0080	move.w	#$80,d1
00007b6c 082800000022	btst	#0,obStatus(a0)
00007b72 6704	beq.s	loc_7B78
00007b74 4440	neg.w	d0
00007b76 d041	add.w	d1,d0
00007b78 6040	bra.s	Swing_Move2
00007b7a 4a28003d	tst.b	objoff_3D(a0)
00007b7e 661c	bne.s	loc_7B9C
00007b80 3028003e	move.w	objoff_3E(a0),d0
00007b84 5040	addq.w	#8,d0
00007b86 3140003e	move.w	d0,objoff_3E(a0)
00007b8a d1680026	add.w	d0,obAngle(a0)
00007b8e 0c400200	cmpi.w	#$200,d0
00007b92 6622	bne.s	loc_7BB6
00007b94 117c0001003d	move.b	#1,objoff_3D(a0)
00007b9a 601a	bra.s	loc_7BB6
00007b9c 3028003e	move.w	objoff_3E(a0),d0
00007ba0 5140	subq.w	#8,d0
00007ba2 3140003e	move.w	d0,objoff_3E(a0)
00007ba6 d1680026	add.w	d0,obAngle(a0)
00007baa 0c40fe00	cmpi.w	#-$200,d0
00007bae 6606	bne.s	loc_7BB6
00007bb0 117c0000003d	move.b	#0,objoff_3D(a0)
00007bb6 10280026	move.b	obAngle(a0),d0
00007bba 6100ae1e	bsr.w	CalcSine
00007bbe 34280038	move.w	objoff_38(a0),d2
00007bc2 3628003a	move.w	objoff_3A(a0),d3
00007bc6 45e80028	lea	obSubtype(a0),a2
00007bca 7c00	moveq	#0,d6
00007bcc 1c1a	move.b	(a2)+,d6
00007bce 7800	moveq	#0,d4
00007bd0 181a	move.b	(a2)+,d4
00007bd2 ed4c	lsl.w	#object_size_bits,d4
00007bd4 068400ffd000	addi.l	#v_objspace&$FFFFFF,d4
00007bda 2244	movea.l	d4,a1
00007bdc 7800	moveq	#0,d4
00007bde 1829003c	move.b	objoff_3C(a1),d4
00007be2 2a04	move.l	d4,d5
00007be4 c9c0	muls.w	d0,d4
00007be6 e084	asr.l	#8,d4
00007be8 cbc1	muls.w	d1,d5
00007bea e085	asr.l	#8,d5
00007bec d842	add.w	d2,d4
00007bee da43	add.w	d3,d5
00007bf0 3344000c	move.w	d4,obY(a1)
00007bf4 33450008	move.w	d5,obX(a1)
00007bf8 51ceffd4	dbf	d6,loc_7BCE
00007bfc 4e75	rts	
00007bfe 3028003a	move.w	objoff_3A(a0),d0
00007c02 0240ff80	andi.w	#$FF80,d0
00007c06 3238f700	move.w	(v_screenposx).w,d1
00007c0a 04410080	subi.w	#128,d1
00007c0e 0241ff80	andi.w	#$FF80,d1
00007c12 9041	sub.w	d1,d0
00007c14 0c400280	cmpi.w	#128+320+192,d0
00007c18 62000004	bhi.w	Swing_DelAll
00007c1c 4e75	rts	
00007c1e 7400	moveq	#0,d2
00007c20 45e80028	lea	obSubtype(a0),a2
00007c24 141a	move.b	(a2)+,d2
00007c26 7000	moveq	#0,d0
00007c28 101a	move.b	(a2)+,d0
00007c2a ed48	lsl.w	#object_size_bits,d0
00007c2c 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00007c32 2240	movea.l	d0,a1
00007c34 61005a0c	bsr.w	DeleteChild
00007c38 51caffec	dbf	d2,Swing_DelLoop
00007c3c 4e75	rts	
00007c3e 61005a00	bsr.w	DeleteObject
00007c42 4e75	rts	
00007c44 600059be	bra.w	DisplaySprite
00007ca2 7000	moveq	#0,d0
00007ca4 10280024	move.b	obRoutine(a0),d0
00007ca8 323b0006	move.w	Hel_Index(pc,d0.w),d1
00007cac 4efb1002	jmp	Hel_Index(pc,d1.w)
00007cba 54280024	addq.b	#2,obRoutine(a0)
00007cbe 217c00007df80004	move.l	#Map_Hel,obMap(a0)
00007cc6 317c43980002	move.w	#ArtTile_GHZ_Spike_Pole|Tile_Pal3,obGfx(a0)
00007ccc 117c00070022	move.b	#7,obStatus(a0)
00007cd2 117c00040001	move.b	#4,obRender(a0)
00007cd8 117c00030018	move.b	#3,obPriority(a0)
00007cde 117c00080019	move.b	#8,obActWid(a0)
00007ce4 3428000c	move.w	obY(a0),d2
00007ce8 36280008	move.w	obX(a0),d3
00007cf0 45e80028	lea	obSubtype(a0),a2
00007cf4 7200	moveq	#0,d1
00007cf6 1212	move.b	(a2),d1
00007cf8 14fc0000	move.b	#0,(a2)+
00007cfc 3001	move.w	d1,d0
00007cfe e248	lsr.w	#1,d0
00007d00 e948	lsl.w	#4,d0
00007d02 9640	sub.w	d0,d3
00007d04 5501	subq.b	#2,d1
00007d06 6574	bcs.s	Hel_Action
00007d08 7c00	moveq	#0,d6
00007d0a 61005d80	bsr.w	FindFreeObj
00007d0e 666c	bne.s	Hel_Action
00007d10 52280028	addq.b	#1,obSubtype(a0)
00007d14 3a09	move.w	a1,d5
00007d16 0445d000	subi.w	#v_objspace&$FFFF,d5
00007d1a ec4d	lsr.w	#object_size_bits,d5
00007d1c 0245007f	andi.w	#$7F,d5
00007d20 14c5	move.b	d5,(a2)+
00007d22 137c00080024	move.b	#8,obRoutine(a1)
00007d2c 3342000c	move.w	d2,obY(a1)
00007d30 33430008	move.w	d3,obX(a1)
00007d34 236800040004	move.l	obMap(a0),obMap(a1)
00007d3a 337c43980002	move.w	#ArtTile_GHZ_Spike_Pole|Tile_Pal3,obGfx(a1)
00007d40 137c00040001	move.b	#4,obRender(a1)
00007d46 137c00030018	move.b	#3,obPriority(a1)
00007d4c 137c00080019	move.b	#8,obActWid(a1)
00007d52 1346003e	move.b	d6,hel_frame(a1)
00007d56 5206	addq.b	#1,d6
00007d58 02060007	andi.b	#7,d6
00007d5c 06430010	addi.w	#$10,d3
00007d60 b6680008	cmp.w	obX(a0),d3
00007d64 6612	bne.s	Hel_NotCentre
00007d66 1146003e	move.b	d6,hel_frame(a0)
00007d6a 5206	addq.b	#1,d6
00007d6c 02060007	andi.b	#7,d6
00007d70 06430010	addi.w	#$10,d3
00007d74 52280028	addq.b	#1,obSubtype(a0)
00007d78 51c9ff90	dbf	d1,Hel_Build
00007d7c 6100000a	bsr.w	Hel_RotateSpikes
00007d80 61005882	bsr.w	DisplaySprite
00007d84 60000022	bra.w	Hel_ChkDel
00007d88 1038fec1	move.b	(v_ani0_frame).w,d0
00007d8c 117c00000020	move.b	#0,obColType(a0)
00007d92 d028003e	add.b	hel_frame(a0),d0
00007d96 02000007	andi.b	#7,d0
00007d9a 1140001a	move.b	d0,obFrame(a0)
00007d9e 6606	bne.s	locret_7DA6
00007da0 117c00840020	move.b	#$84,obColType(a0)
00007da6 4e75	rts	
00007da8 30280008	move.w	obX(a0),d0
00007dac 0240ff80	andi.w	#$FF80,d0
00007db0 3238f700	move.w	(v_screenposx).w,d1
00007db4 04410080	subi.w	#128,d1
00007db8 0241ff80	andi.w	#$FF80,d1
00007dbc 9041	sub.w	d1,d0
00007dbe 0c400280	cmpi.w	#128+320+192,d0
00007dc2 62000004	bhi.w	Hel_DelAll
00007dc6 4e75	rts	
00007dc8 7400	moveq	#0,d2
00007dca 45e80028	lea	obSubtype(a0),a2
00007dce 141a	move.b	(a2)+,d2
00007dd0 5502	subq.b	#2,d2
00007dd2 6516	bcs.s	Hel_Delete
00007dd4 7000	moveq	#0,d0
00007dd6 101a	move.b	(a2)+,d0
00007dd8 ed48	lsl.w	#object_size_bits,d0
00007dda 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00007de0 2240	movea.l	d0,a1
00007de2 6100585e	bsr.w	DeleteChild
00007de6 51caffec	dbf	d2,Hel_DelLoop
00007dea 61005854	bsr.w	DeleteObject
00007dee 4e75	rts	
00007df0 6100ff96	bsr.w	Hel_RotateSpikes
00007df4 6000580e	bra.w	DisplaySprite
00007e32 7000	moveq	#0,d0
00007e34 10280024	move.b	obRoutine(a0),d0
00007e38 323b0006	move.w	Plat_Index(pc,d0.w),d1
00007e3c 4efb1002	jmp	Plat_Index(pc,d1.w)
00007e4a 54280024	addq.b	#2,obRoutine(a0)
00007e4e 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
00007e54 217c0000813c0004	move.l	#Map_Plat_GHZ,obMap(a0)
00007e5c 117c00200019	move.b	#$20,obActWid(a0)
00007e62 0c380004fe10	cmpi.b	#id_SYZ,(v_zone).w
00007e68 660e	bne.s	.notSYZ
00007e6a 217c000081880004	move.l	#Map_Plat_SYZ,obMap(a0)
00007e72 117c00200019	move.b	#$20,obActWid(a0)
00007e78 0c380003fe10	cmpi.b	#id_SLZ,(v_zone).w
00007e7e 661a	bne.s	.notSLZ
00007e80 217c0000819a0004	move.l	#Map_Plat_SLZ,obMap(a0)
00007e88 117c00200019	move.b	#$20,obActWid(a0)
00007e8e 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
00007e94 117c00030028	move.b	#3,obSubtype(a0)
00007e9a 117c00040001	move.b	#4,obRender(a0)
00007ea0 117c00040018	move.b	#4,obPriority(a0)
00007ea6 3168000c002c	move.w	obY(a0),objoff_2C(a0)
00007eac 3168000c0034	move.w	obY(a0),objoff_34(a0)
00007eb2 316800080032	move.w	obX(a0),objoff_32(a0)
00007eb8 317c00800026	move.w	#$80,obAngle(a0)
00007ebe 7200	moveq	#0,d1
00007ec0 10280028	move.b	obSubtype(a0),d0
00007ec4 0c00000a	cmpi.b	#$A,d0
00007ec8 6608	bne.s	.setframe
00007eca 5201	addq.b	#1,d1
00007ecc 117c00200019	move.b	#$20,obActWid(a0)
00007ed2 1141001a	move.b	d1,obFrame(a0)
00007ed6 4a280038	tst.b	objoff_38(a0)
00007eda 6704	beq.s	loc_7EE0
00007edc 59280038	subq.b	#4,objoff_38(a0)
00007ee0 7200	moveq	#0,d1
00007ee2 12280019	move.b	obActWid(a0),d1
00007ee6 6100f564	bsr.w	PlatformObject
00007eea 6100005a	bsr.w	Plat_Move
00007eee 6100003c	bsr.w	Plat_Nudge
00007ef2 61005710	bsr.w	DisplaySprite
00007ef6 600001e0	bra.w	Plat_ChkDel
00007efa 0c2800400038	cmpi.b	#$40,objoff_38(a0)
00007f00 6704	beq.s	loc_7F06
00007f02 58280038	addq.b	#4,objoff_38(a0)
00007f06 7200	moveq	#0,d1
00007f08 12280019	move.b	obActWid(a0),d1
00007f0c 6100f6b2	bsr.w	ExitPlatform
00007f10 3f280008	move.w	obX(a0),-(sp)
00007f14 61000030	bsr.w	Plat_Move
00007f18 61000012	bsr.w	Plat_Nudge
00007f1c 341f	move.w	(sp)+,d2
00007f1e 6100fc0e	bsr.w	MvSonicOnPtfm2
00007f22 610056e0	bsr.w	DisplaySprite
00007f26 600001b0	bra.w	Plat_ChkDel
00007f2a 4e75	rts	
00007f2c 10280038	move.b	objoff_38(a0),d0
00007f30 6100aaa8	bsr.w	CalcSine
00007f34 323c0400	move.w	#$400,d1
00007f38 c1c1	muls.w	d1,d0
00007f3a 4840	swap	d0
00007f3c d068002c	add.w	objoff_2C(a0),d0
00007f40 3140000c	move.w	d0,obY(a0)
00007f44 4e75	rts	
00007f46 7000	moveq	#0,d0
00007f48 10280028	move.b	obSubtype(a0),d0
00007f4c 0240000f	andi.w	#$F,d0
00007f50 d040	add.w	d0,d0
00007f52 323b0006	move.w	.index(pc,d0.w),d1
00007f56 4efb1002	jmp	.index(pc,d1.w)
00007f74 4e75	rts	
00007f76 30280032	move.w	objoff_32(a0),d0
00007f7a 12280026	move.b	obAngle(a0),d1
00007f7e 4401	neg.b	d1
00007f80 06010040	addi.b	#$40,d1
00007f84 600c	bra.s	.type01_move
00007f86 30280032	move.w	objoff_32(a0),d0
00007f8a 12280026	move.b	obAngle(a0),d1
00007f8e 04010040	subi.b	#$40,d1
00007f92 4881	ext.w	d1
00007f94 d041	add.w	d1,d0
00007f96 31400008	move.w	d0,obX(a0)
00007f9a 60000134	bra.w	.chgmotion
00007f9e 30280034	move.w	objoff_34(a0),d0
00007fa2 1238fe6c	move.b	(v_oscillate+$E).w,d1
00007fa6 4401	neg.b	d1
00007fa8 06010030	addi.b	#$30,d1
00007fac 602a	bra.s	.type02_move
00007fae 30280034	move.w	objoff_34(a0),d0
00007fb2 1238fe6c	move.b	(v_oscillate+$E).w,d1
00007fb6 04010030	subi.b	#$30,d1
00007fba 601c	bra.s	.type02_move
00007fbc 30280034	move.w	objoff_34(a0),d0
00007fc0 12280026	move.b	obAngle(a0),d1
00007fc4 4401	neg.b	d1
00007fc6 06010040	addi.b	#$40,d1
00007fca 600c	bra.s	.type02_move
00007fcc 30280034	move.w	objoff_34(a0),d0
00007fd0 12280026	move.b	obAngle(a0),d1
00007fd4 04010040	subi.b	#$40,d1
00007fd8 4881	ext.w	d1
00007fda d041	add.w	d1,d0
00007fdc 3140002c	move.w	d0,objoff_2C(a0)
00007fe0 600000ee	bra.w	.chgmotion
00007fe4 4a68003a	tst.w	objoff_3A(a0)
00007fe8 6610	bne.s	.type03_wait
00007fea 082800030022	btst	#3,obStatus(a0)
00007ff0 6706	beq.s	.type03_nomove
00007ff2 317c001e003a	move.w	#30,objoff_3A(a0)
00007ff8 4e75	rts	
00007ffa 5368003a	subq.w	#1,objoff_3A(a0)
00007ffe 66f8	bne.s	.type03_nomove
00008000 317c0020003a	move.w	#32,objoff_3A(a0)
00008006 52280028	addq.b	#1,obSubtype(a0)
0000800a 4e75	rts	
0000800c 4a68003a	tst.w	objoff_3A(a0)
00008010 6736	beq.s	.loc_8048
00008012 5368003a	subq.w	#1,objoff_3A(a0)
00008016 6630	bne.s	.loc_8048
00008018 082800030022	btst	#3,obStatus(a0)
0000801e 6722	beq.s	.loc_8042
00008020 08e900010022	bset	#1,obStatus(a1)
00008026 08a900030022	bclr	#3,obStatus(a1)
0000802c 137c00020024	move.b	#2,obRoutine(a1)
00008032 08a800030022	bclr	#3,obStatus(a0)
00008038 42280025	clr.b	ob2ndRout(a0)
0000803c 336800120012	move.w	obVelY(a0),obVelY(a1)
00008042 117c00080024	move.b	#8,obRoutine(a0)
00008048 2628002c	move.l	objoff_2C(a0),d3
0000804c 30280012	move.w	obVelY(a0),d0
00008050 48c0	ext.l	d0
00008052 e180	asl.l	#8,d0
00008054 d680	add.l	d0,d3
00008056 2143002c	move.l	d3,objoff_2C(a0)
0000805a 066800380012	addi.w	#$38,obVelY(a0)
00008060 3038f72e	move.w	(v_limitbtm2).w,d0
00008064 064000e0	addi.w	#$E0,d0
00008068 b068002c	cmp.w	objoff_2C(a0),d0
0000806c 6406	bhs.s	.locret_8074
0000806e 117c00060024	move.b	#6,obRoutine(a0)
00008074 4e75	rts	
00008076 4a68003a	tst.w	objoff_3A(a0)
0000807a 661a	bne.s	.type07_wait
0000807c 45f8f7e0	lea	(f_switch).w,a2
00008080 7000	moveq	#0,d0
00008082 10280028	move.b	obSubtype(a0),d0
00008086 e848	lsr.w	#4,d0
00008088 4a320000	tst.b	(a2,d0.w)
0000808c 6706	beq.s	.type07_nomove
0000808e 317c003c003a	move.w	#60,objoff_3A(a0)
00008094 4e75	rts	
00008096 5368003a	subq.w	#1,objoff_3A(a0)
0000809a 66f8	bne.s	.type07_nomove
0000809c 52280028	addq.b	#1,obSubtype(a0)
000080a0 4e75	rts	
000080a2 5568002c	subq.w	#2,objoff_2C(a0)
000080a6 30280034	move.w	objoff_34(a0),d0
000080aa 04400200	subi.w	#$200,d0
000080ae b068002c	cmp.w	objoff_2C(a0),d0
000080b2 6604	bne.s	.type08_nostop
000080b4 42280028	clr.b	obSubtype(a0)
000080b8 4e75	rts	
000080ba 30280034	move.w	objoff_34(a0),d0
000080be 12280026	move.b	obAngle(a0),d1
000080c2 04010040	subi.b	#$40,d1
000080c6 4881	ext.w	d1
000080c8 e241	asr.w	#1,d1
000080ca d041	add.w	d1,d0
000080cc 3140002c	move.w	d0,objoff_2C(a0)
000080d0 1178fe780026	move.b	(v_oscillate+$1A).w,obAngle(a0)
000080d6 4e75	rts	
000080d8 30280032	move.w	objoff_32(a0),d0
000080dc 0240ff80	andi.w	#$FF80,d0
000080e0 3238f700	move.w	(v_screenposx).w,d1
000080e4 04410080	subi.w	#128,d1
000080e8 0241ff80	andi.w	#$FF80,d1
000080ec 9041	sub.w	d1,d0
000080ee 0c400280	cmpi.w	#128+320+192,d0
000080f2 6202	bhi.s	Plat_Delete
000080f4 4e75	rts	
000080f6 60005548	bra.w	DeleteObject
000081a8 4e75	rts	
00008210 7000	moveq	#0,d0
00008212 10280024	move.b	obRoutine(a0),d0
00008216 323b0006	move.w	Ledge_Index(pc,d0.w),d1
0000821a 4efb1002	jmp	Ledge_Index(pc,d1.w)
0000822a 54280024	addq.b	#2,obRoutine(a0)
0000822e 217c000085a00004	move.l	#Map_Ledge,obMap(a0)
00008236 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
0000823c 002800040001	ori.b	#4,obRender(a0)
00008242 117c00040018	move.b	#4,obPriority(a0)
00008248 117c00070038	move.b	#7,ledge_timedelay(a0)
0000824e 117c00640019	move.b	#$64,obActWid(a0)
00008254 11680028001a	move.b	obSubtype(a0),obFrame(a0)
0000825a 117c00380016	move.b	#$38,obHeight(a0)
00008260 08e800040001	bset	#4,obRender(a0)
00008266 4a28003a	tst.b	ledge_collapse_flag(a0)
0000826a 670c	beq.s	.slope
0000826c 4a280038	tst.b	ledge_timedelay(a0)
00008270 67000202	beq.w	Ledge_Fragment
00008274 53280038	subq.b	#1,ledge_timedelay(a0)
00008278 323c0030	move.w	#$30,d1
0000827c 45f900008570	lea	(Ledge_SlopeData).l,a2
00008282 6100f29c	bsr.w	SlopeObject
00008286 60007424	bra.w	RememberState
0000828a 4a280038	tst.b	ledge_timedelay(a0)
0000828e 670001ea	beq.w	loc_847A
00008292 117c0001003a	move.b	#1,ledge_collapse_flag(a0)
00008298 53280038	subq.b	#1,ledge_timedelay(a0)
0000829c 323c0030	move.w	#$30,d1
000082a0 6100f31e	bsr.w	ExitPlatform
000082a4 323c0030	move.w	#$30,d1
000082a8 45f900008570	lea	(Ledge_SlopeData).l,a2
000082ae 34280008	move.w	obX(a0),d2
000082b2 61000276	bsr.w	SlopeObject2
000082b6 600073f4	bra.w	RememberState
000082ba 4a280038	tst.b	ledge_timedelay(a0)
000082be 674a	beq.s	Ledge_TimeZero
000082c0 4a28003a	tst.b	ledge_collapse_flag(a0)
000082c4 6600000a	bne.w	loc_82D0
000082c8 53280038	subq.b	#1,ledge_timedelay(a0)
000082cc 60005336	bra.w	DisplaySprite
000082d0 53280038	subq.b	#1,ledge_timedelay(a0)
000082d4 6100ffc6	bsr.w	Ledge_WalkOff
000082d8 43f8d000	lea	(v_player).w,a1
000082dc 082900030022	btst	#3,obStatus(a1)
000082e2 6718	beq.s	loc_82FC
000082e4 4a280038	tst.b	ledge_timedelay(a0)
000082e8 661e	bne.s	locret_8308
000082ea 08a900030022	bclr	#3,obStatus(a1)
000082f0 08a900050022	bclr	#5,obStatus(a1)
000082f6 137c0001001d	move.b	#id_Run,obPrevAni(a1)
000082fc 117c0000003a	move.b	#0,ledge_collapse_flag(a0)
00008302 117c00060024	move.b	#6,obRoutine(a0)
00008308 4e75	rts	
0000830a 610052a6	bsr.w	ObjectFall
0000830e 610052f4	bsr.w	DisplaySprite
00008312 4a280001	tst.b	obRender(a0)
00008316 6a02	bpl.s	Ledge_Delete
00008318 4e75	rts	
0000831a 61005324	bsr.w	DeleteObject
0000831e 4e75	rts	
00008320 7000	moveq	#0,d0
00008322 10280024	move.b	obRoutine(a0),d0
00008326 323b0006	move.w	CFlo_Index(pc,d0.w),d1
0000832a 4efb1002	jmp	CFlo_Index(pc,d1.w)
0000833a 54280024	addq.b	#2,obRoutine(a0)
0000833e 217c000087460004	move.l	#Map_CFlo,obMap(a0)
00008346 317c42b80002	move.w	#ArtTile_MZ_Block|Tile_Pal3,obGfx(a0)
0000834c 0c380003fe10	cmpi.b	#id_SLZ,(v_zone).w
00008352 660a	bne.s	.notSLZ
00008354 317c44e00002	move.w	#ArtTile_SLZ_Collapsing_Floor|Tile_Pal3,obGfx(a0)
0000835a 5428001a	addq.b	#2,obFrame(a0)
0000835e 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
00008364 6606	bne.s	.notSBZ
00008366 317c43f50002	move.w	#ArtTile_SBZ_Collapsing_Floor|Tile_Pal3,obGfx(a0)
0000836c 002800040001	ori.b	#4,obRender(a0)
00008372 117c00040018	move.b	#4,obPriority(a0)
00008378 117c00070038	move.b	#7,cflo_timedelay(a0)
0000837e 117c00440019	move.b	#$44,obActWid(a0)
00008384 4a28003a	tst.b	cflo_collapse_flag(a0)
00008388 670c	beq.s	.solid
0000838a 4a280038	tst.b	cflo_timedelay(a0)
0000838e 670000c2	beq.w	CFlo_Fragment
00008392 53280038	subq.b	#1,cflo_timedelay(a0)
00008396 323c0020	move.w	#$20,d1
0000839a 6100f0b0	bsr.w	PlatformObject
0000839e 4a280028	tst.b	obSubtype(a0)
000083a2 6a1e	bpl.s	.remstate
000083a4 082900030022	btst	#3,obStatus(a1)
000083aa 6716	beq.s	.remstate
000083ac 08a800000001	bclr	#0,obRender(a0)
000083b2 30290008	move.w	obX(a1),d0
000083b6 90680008	sub.w	obX(a0),d0
000083ba 6406	bcc.s	.remstate
000083bc 08e800000001	bset	#0,obRender(a0)
000083c2 600072e8	bra.w	RememberState
000083c6 4a280038	tst.b	cflo_timedelay(a0)
000083ca 6700008c	beq.w	loc_8458
000083ce 117c0001003a	move.b	#1,cflo_collapse_flag(a0)
000083d4 53280038	subq.b	#1,cflo_timedelay(a0)
000083d8 323c0020	move.w	#$20,d1
000083dc 6100f1e2	bsr.w	ExitPlatform
000083e0 34280008	move.w	obX(a0),d2
000083e4 6100f748	bsr.w	MvSonicOnPtfm2
000083e8 600072c2	bra.w	RememberState
000083ec 4a280038	tst.b	cflo_timedelay(a0)
000083f0 674a	beq.s	CFlo_TimeZero
000083f2 4a28003a	tst.b	cflo_collapse_flag(a0)
000083f6 6600000a	bne.w	loc_8402
000083fa 53280038	subq.b	#1,cflo_timedelay(a0)
000083fe 60005204	bra.w	DisplaySprite
00008402 53280038	subq.b	#1,cflo_timedelay(a0)
00008406 6100ffd0	bsr.w	CFlo_WalkOff
0000840a 43f8d000	lea	(v_player).w,a1
0000840e 082900030022	btst	#3,obStatus(a1)
00008414 6718	beq.s	loc_842E
00008416 4a280038	tst.b	cflo_timedelay(a0)
0000841a 661e	bne.s	locret_843A
0000841c 08a900030022	bclr	#3,obStatus(a1)
00008422 08a900050022	bclr	#5,obStatus(a1)
00008428 137c0001001d	move.b	#id_Run,obPrevAni(a1)
0000842e 117c0000003a	move.b	#0,cflo_collapse_flag(a0)
00008434 117c00060024	move.b	#6,obRoutine(a0)
0000843a 4e75	rts	
0000843c 61005174	bsr.w	ObjectFall
00008440 610051c2	bsr.w	DisplaySprite
00008444 4a280001	tst.b	obRender(a0)
00008448 6a02	bpl.s	CFlo_Delete
0000844a 4e75	rts	
0000844c 610051f2	bsr.w	DeleteObject
00008450 4e75	rts	
00008452 117c0000003a	move.b	#0,cflo_collapse_flag(a0)
00008458 49f90000851a	lea	(CFlo_Data2).l,a4
0000845e 082800000028	btst	#0,obSubtype(a0)
00008464 6706	beq.s	loc_846C
00008466 49f900008522	lea	(CFlo_Data3).l,a4
0000846c 7207	moveq	#7,d1
0000846e 5228001a	addq.b	#1,obFrame(a0)
00008472 6012	bra.s	loc_8486
00008474 117c0000003a	move.b	#0,ledge_collapse_flag(a0)
0000847a 49f900008500	lea	(CFlo_Data1).l,a4
00008480 7218	moveq	#$18,d1
00008482 5428001a	addq.b	#2,obFrame(a0)
00008486 7000	moveq	#0,d0
00008488 1028001a	move.b	obFrame(a0),d0
0000848c d040	add.w	d0,d0
0000848e 26680004	movea.l	obMap(a0),a3
00008492 d6f30000	adda.w	(a3,d0.w),a3
00008496 524b	addq.w	#1,a3
00008498 08e800050001	bset	#5,obRender(a0)
000084a2 1a280001	move.b	obRender(a0),d5
000084a6 2248	movea.l	a0,a1
000084a8 6008	bra.s	loc_84B2
000084aa 610055e0	bsr.w	FindFreeObj
000084ae 6642	bne.s	loc_84F2
000084b0 5a4b	addq.w	#5,a3
000084b2 137c00060024	move.b	#6,obRoutine(a1)
000084bc 234b0004	move.l	a3,obMap(a1)
000084c0 13450001	move.b	d5,obRender(a1)
000084c4 336800080008	move.w	obX(a0),obX(a1)
000084ca 3368000c000c	move.w	obY(a0),obY(a1)
000084d0 336800020002	move.w	obGfx(a0),obGfx(a1)
000084d6 136800180018	move.b	obPriority(a0),obPriority(a1)
000084dc 136800190019	move.b	obActWid(a0),obActWid(a1)
000084e2 135c0038	move.b	(a4)+,ledge_timedelay(a1)
000084e6 b3c8	cmpa.l	a0,a1
000084e8 6404	bhs.s	loc_84EE
000084ea 61005136	bsr.w	DisplaySprite2
000084ee 51c9ffba	dbf	d1,loc_84AA
000084f2 61005110	bsr.w	DisplaySprite
000084f6 303c00b9	move.w	#sfx_Collapse,d0
000084fa 4ef90000139c	jmp	(QueueSound2).l
0000852a 43f8d000	lea	(v_player).w,a1
0000852e 082900030022	btst	#3,obStatus(a1)
00008534 6738	beq.s	locret_856E
00008536 30290008	move.w	obX(a1),d0
0000853a 90680008	sub.w	obX(a0),d0
0000853e d041	add.w	d1,d0
00008540 e248	lsr.w	#1,d0
00008542 082800000001	btst	#0,obRender(a0)
00008548 6704	beq.s	loc_854E
0000854a 4640	not.w	d0
0000854c d041	add.w	d1,d0
0000854e 7200	moveq	#0,d1
00008550 12320000	move.b	(a2,d0.w),d1
00008554 3028000c	move.w	obY(a0),d0
00008558 9041	sub.w	d1,d0
0000855a 7200	moveq	#0,d1
0000855c 12290016	move.b	obHeight(a1),d1
00008560 9041	sub.w	d1,d0
00008562 3340000c	move.w	d0,obY(a1)
00008566 94680008	sub.w	obX(a0),d2
0000856a 95690008	sub.w	d2,obX(a1)
0000856e 4e75	rts	
000087ca 7000	moveq	#0,d0
000087cc 10280024	move.b	obRoutine(a0),d0
000087d0 323b0006	move.w	Scen_Index(pc,d0.w),d1
000087d4 4efb1002	jmp	Scen_Index(pc,d1.w)
000087dc 54280024	addq.b	#2,obRoutine(a0)
000087e0 7000	moveq	#0,d0
000087e2 10280028	move.b	obSubtype(a0),d0
000087e6 c0fc000a	mulu.w	#$A,d0
000087ea 43fb0042	lea	Scen_Values(pc,d0.w),a1
000087ee 21590004	move.l	(a1)+,obMap(a0)
000087f2 31590002	move.w	(a1)+,obGfx(a0)
000087f6 002800040001	ori.b	#4,obRender(a0)
000087fc 1159001a	move.b	(a1)+,obFrame(a0)
00008800 11590019	move.b	(a1)+,obActWid(a0)
00008804 11590018	move.b	(a1)+,obPriority(a0)
00008808 11590020	move.b	(a1)+,obColType(a0)
0000880c 30280008	move.w	obX(a0),d0
00008810 0240ff80	andi.w	#$FF80,d0
00008814 3238f700	move.w	(v_screenposx).w,d1
00008818 04410080	subi.w	#128,d1
0000881c 0241ff80	andi.w	#$FF80,d1
00008820 9041	sub.w	d1,d0
00008822 0c400280	cmpi.w	#128+320+192,d0
00008826 62004e18	bhi.w	DeleteObject
0000882a 60004dd8	bra.w	DisplaySprite
0000885e 7000	moveq	#0,d0
00008860 10280024	move.b	obRoutine(a0),d0
00008864 323b0006	move.w	Swi_Index(pc,d0.w),d1
00008868 4efb1002	jmp	Swi_Index(pc,d1.w)
00008872 54280024	addq.b	#2,obRoutine(a0)
00008876 217c0000891c0004	move.l	#Map_Swi,obMap(a0)
0000887e 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
00008884 117c00040001	move.b	#4,obRender(a0)
0000888a 3168000c0030	move.w	obY(a0),swi_origY(a0)
00008890 117c00100019	move.b	#$10,obActWid(a0)
00008896 117c00050018	move.b	#5,obPriority(a0)
0000889c 31680030000c	move.w	swi_origY(a0),obY(a0)
000088a2 323c0010	move.w	#$10,d1
000088a6 61000038	bsr.w	Swi_ChkTouch
000088aa 670a	beq.s	Swi_ChkDel
000088ac 5468000c	addq.w	#2,obY(a0)
000088b0 7001	moveq	#1,d0
000088b2 31c0f7e0	move.w	d0,(f_switch).w
000088b6 61004d4c	bsr.w	DisplaySprite
000088ba 30280008	move.w	obX(a0),d0
000088be 0240ff80	andi.w	#$FF80,d0
000088c2 3238f700	move.w	(v_screenposx).w,d1
000088c6 04410080	subi.w	#128,d1
000088ca 0241ff80	andi.w	#$FF80,d1
000088ce 9041	sub.w	d1,d0
000088d0 0c400280	cmpi.w	#128+320+192,d0
000088d4 62000004	bhi.w	Swi_Delete
000088d8 4e75	rts	
000088da 61004d64	bsr.w	DeleteObject
000088de 4e75	rts	
000088e0 43f8d000	lea	(v_player).w,a1
000088e4 30290008	move.w	obX(a1),d0
000088e8 90680008	sub.w	obX(a0),d0
000088ec d041	add.w	d1,d0
000088ee 6b28	bmi.s	Swi_NoTouch
000088f0 d241	add.w	d1,d1
000088f2 b041	cmp.w	d1,d0
000088f4 6422	bhs.s	Swi_NoTouch
000088f6 3429000c	move.w	obY(a1),d2
000088fa 12290016	move.b	obHeight(a1),d1
000088fe 4881	ext.w	d1
00008900 d242	add.w	d2,d1
00008902 3028000c	move.w	obY(a0),d0
00008906 04400010	subi.w	#$10,d0
0000890a 9041	sub.w	d1,d0
0000890c 620a	bhi.s	Swi_NoTouch
0000890e 0c40fff0	cmpi.w	#-$10,d0
00008912 6504	blo.s	Swi_NoTouch
00008914 70ff	moveq	#-1,d0
00008916 4e75	rts	
00008918 7000	moveq	#0,d0
0000891a 4e75	rts	
00008934 7000	moveq	#0,d0
00008936 10280024	move.b	obRoutine(a0),d0
0000893a 323b0006	move.w	ADoor_Index(pc,d0.w),d1
0000893e 4efb1002	jmp	ADoor_Index(pc,d1.w)
00008946 54280024	addq.b	#2,obRoutine(a0)
0000894a 217c000089ec0004	move.l	#Map_ADoor,obMap(a0)
00008952 317c42e80002	move.w	#ArtTile_SBZ_Door|Tile_Pal3,obGfx(a0)
00008958 002800040001	ori.b	#4,obRender(a0)
0000895e 117c00080019	move.b	#8,obActWid(a0)
00008964 117c00040018	move.b	#4,obPriority(a0)
0000896a 323c0040	move.w	#$40,d1
0000896e 4228001c	clr.b	obAnim(a0)
00008972 3038d008	move.w	(v_player+obX).w,d0
00008976 d041	add.w	d1,d0
00008978 b0680008	cmp.w	obX(a0),d0
0000897c 652a	blo.s	ADoor_Animate
0000897e 9041	sub.w	d1,d0
00008980 9041	sub.w	d1,d0
00008982 b0680008	cmp.w	obX(a0),d0
00008986 6420	bhs.s	ADoor_Animate
00008988 d041	add.w	d1,d0
0000898a b0680008	cmp.w	obX(a0),d0
0000898e 640a	bhs.s	loc_899A
00008990 082800000022	btst	#0,obStatus(a0)
00008996 6610	bne.s	ADoor_Animate
00008998 6008	bra.s	ADoor_Open
0000899a 082800000022	btst	#0,obStatus(a0)
000089a0 6706	beq.s	ADoor_Animate
000089a2 117c0001001c	move.b	#1,obAnim(a0)
000089a8 43f9000089d0	lea	(Ani_ADoor).l,a1
000089ae 61001d68	bsr.w	AnimateSprite
000089b2 4a28001a	tst.b	obFrame(a0)
000089b6 6614	bne.s	.remember
000089b8 323c0011	move.w	#$11,d1
000089bc 343c0020	move.w	#$20,d2
000089c0 3602	move.w	d2,d3
000089c2 5243	addq.w	#1,d3
000089c4 38280008	move.w	obX(a0),d4
000089c8 6100700c	bsr.w	SolidObject
000089cc 60006cde	bra.w	RememberState
00008a62 61000076	bsr.w	EdgeWall_SolidWall2
00008a66 6740	beq.s	loc_8AA8
00008a68 6b00005a	bmi.w	loc_8AC4
00008a6c 4a40	tst.w	d0
00008a6e 67000022	beq.w	loc_8A92
00008a72 6b08	bmi.s	loc_8A7C
00008a74 4a690010	tst.w	obVelX(a1)
00008a78 6b18	bmi.s	loc_8A92
00008a7a 6006	bra.s	loc_8A82
00008a7c 4a690010	tst.w	obVelX(a1)
00008a80 6a10	bpl.s	loc_8A92
00008a82 91690008	sub.w	d0,obX(a1)
00008a86 337c00000014	move.w	#0,obInertia(a1)
00008a8c 337c00000010	move.w	#0,obVelX(a1)
00008a92 082900010022	btst	#1,obStatus(a1)
00008a98 661c	bne.s	loc_8AB6
00008a9a 08e900050022	bset	#5,obStatus(a1)
00008aa0 08e800050022	bset	#5,obStatus(a0)
00008aa6 4e75	rts	
00008aa8 082800050022	btst	#5,obStatus(a0)
00008aae 6712	beq.s	locret_8AC2
00008ab0 337c0001001c	move.w	#id_Run,obAnim(a1)
00008ab6 08a800050022	bclr	#5,obStatus(a0)
00008abc 08a900050022	bclr	#5,obStatus(a1)
00008ac2 4e75	rts	
00008ac4 4a690012	tst.w	obVelY(a1)
00008ac8 6a0e	bpl.s	locret_8AD8
00008aca 4a43	tst.w	d3
00008acc 6a0a	bpl.s	locret_8AD8
00008ace 9769000c	sub.w	d3,obY(a1)
00008ad2 337c00000012	move.w	#0,obVelY(a1)
00008ad8 4e75	rts	
00008ada 43f8d000	lea	(v_player).w,a1
00008ade 30290008	move.w	obX(a1),d0
00008ae2 90680008	sub.w	obX(a0),d0
00008ae6 d041	add.w	d1,d0
00008ae8 6b5e	bmi.s	loc_8B48
00008aea 3601	move.w	d1,d3
00008aec d643	add.w	d3,d3
00008aee b043	cmp.w	d3,d0
00008af0 6256	bhi.s	loc_8B48
00008af2 16290016	move.b	obHeight(a1),d3
00008af6 4883	ext.w	d3
00008af8 d443	add.w	d3,d2
00008afa 3629000c	move.w	obY(a1),d3
00008afe 9668000c	sub.w	obY(a0),d3
00008b02 d642	add.w	d2,d3
00008b04 6b42	bmi.s	loc_8B48
00008b06 3802	move.w	d2,d4
00008b08 d844	add.w	d4,d4
00008b0a b644	cmp.w	d4,d3
00008b0c 643a	bhs.s	loc_8B48
00008b0e 4a38f7c8	tst.b	(f_playerctrl).w
00008b12 6b34	bmi.s	loc_8B48
00008b14 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00008b1a 642c	bhs.s	loc_8B48
00008b1c 4a78fe08	tst.w	(v_debuguse).w
00008b20 6626	bne.s	loc_8B48
00008b22 3a00	move.w	d0,d5
00008b24 b240	cmp.w	d0,d1
00008b26 6408	bhs.s	loc_8B30
00008b28 d241	add.w	d1,d1
00008b2a 9041	sub.w	d1,d0
00008b2c 3a00	move.w	d0,d5
00008b2e 4445	neg.w	d5
00008b30 3203	move.w	d3,d1
00008b32 b443	cmp.w	d3,d2
00008b34 6406	bhs.s	loc_8B3C
00008b36 9644	sub.w	d4,d3
00008b38 3203	move.w	d3,d1
00008b3a 4441	neg.w	d1
00008b3c ba41	cmp.w	d1,d5
00008b3e 6204	bhi.s	loc_8B44
00008b40 7801	moveq	#1,d4
00008b42 4e75	rts	
00008b44 78ff	moveq	#-1,d4
00008b46 4e75	rts	
00008b48 7800	moveq	#0,d4
00008b4a 4e75	rts	
00008b4c 7000	moveq	#0,d0
00008b4e 10280024	move.b	obRoutine(a0),d0
00008b52 323b0006	move.w	Hog_Index(pc,d0.w),d1
00008b56 4efb1002	jmp	Hog_Index(pc,d1.w)
00008b5e 117c00130016	move.b	#$13,obHeight(a0)
00008b64 117c00080017	move.b	#8,obWidth(a0)
00008b6a 217c00008e620004	move.l	#Map_Hog,obMap(a0)
00008b72 317c23020002	move.w	#ArtTile_Ball_Hog|Tile_Pal2,obGfx(a0)
00008b78 117c00040001	move.b	#4,obRender(a0)
00008b7e 117c00040018	move.b	#4,obPriority(a0)
00008b84 117c00050020	move.b	#5,obColType(a0)
00008b8a 117c000c0019	move.b	#$C,obActWid(a0)
00008b90 61004a20	bsr.w	ObjectFall
00008b94 4eb900014e18	jsr	(ObjFloorDist).l
00008b9a 4a41	tst.w	d1
00008b9c 6a0e	bpl.s	.floornotfound
00008b9e d368000c	add.w	d1,obY(a0)
00008ba2 317c00000012	move.w	#0,obVelY(a0)
00008ba8 54280024	addq.b	#2,obRoutine(a0)
00008bac 4e75	rts	
00008bae 43f900008e48	lea	(Ani_Hog).l,a1
00008bb4 61001b62	bsr.w	AnimateSprite
00008bb8 0c280001001a	cmpi.b	#1,obFrame(a0)
00008bbe 6608	bne.s	.setlaunchflag
00008bc0 4a280032	tst.b	hog_launchflag(a0)
00008bc4 670a	beq.s	.makeball
00008bc6 6004	bra.s	.remember
00008bc8 42280032	clr.b	hog_launchflag(a0)
00008bcc 60006ade	bra.w	RememberState
00008bd0 117c00010032	move.b	#1,hog_launchflag(a0)
00008bd6 61004eb4	bsr.w	FindFreeObj
00008bda 663e	bne.s	.fail
00008be2 336800080008	move.w	obX(a0),obX(a1)
00008be8 3368000c000c	move.w	obY(a0),obY(a1)
00008bee 337cff000010	move.w	#-$100,obVelX(a1)
00008bf4 337c00000012	move.w	#0,obVelY(a1)
00008bfa 70fc	moveq	#-4,d0
00008bfc 082800000022	btst	#0,obStatus(a0)
00008c02 6706	beq.s	.noflip
00008c04 4440	neg.w	d0
00008c06 44690010	neg.w	obVelX(a1)
00008c0a d1690008	add.w	d0,obX(a1)
00008c0e 0669000c000c	addi.w	#$C,obY(a1)
00008c14 136800280028	move.b	obSubtype(a0),obSubtype(a1)
00008c1a 60b0	bra.s	.remember
00008c1c 7000	moveq	#0,d0
00008c1e 10280024	move.b	obRoutine(a0),d0
00008c22 323b0006	move.w	Cbal_Index(pc,d0.w),d1
00008c26 4efb1002	jmp	Cbal_Index(pc,d1.w)
00008c2e 54280024	addq.b	#2,obRoutine(a0)
00008c32 117c00070016	move.b	#7,obHeight(a0)
00008c38 217c00008e620004	move.l	#Map_Hog,obMap(a0)
00008c40 317c23020002	move.w	#ArtTile_Ball_Hog|Tile_Pal2,obGfx(a0)
00008c46 117c00040001	move.b	#4,obRender(a0)
00008c4c 117c00030018	move.b	#3,obPriority(a0)
00008c52 117c00870020	move.b	#$87,obColType(a0)
00008c58 117c00080019	move.b	#8,obActWid(a0)
00008c5e 7000	moveq	#0,d0
00008c60 10280028	move.b	obSubtype(a0),d0
00008c64 c0fc003c	mulu.w	#60,d0
00008c68 31400030	move.w	d0,cbal_time(a0)
00008c6c 117c0004001a	move.b	#4,obFrame(a0)
00008c72 4eb90000d5b2	jsr	(ObjectFall).l
00008c78 4a680012	tst.w	obVelY(a0)
00008c7c 6b30	bmi.s	Cbal_ChkExplode
00008c7e 4eb900014e18	jsr	(ObjFloorDist).l
00008c84 4a41	tst.w	d1
00008c86 6a26	bpl.s	Cbal_ChkExplode
00008c88 d368000c	add.w	d1,obY(a0)
00008c8c 317cfd000012	move.w	#-$300,obVelY(a0)
00008c92 4a03	tst.b	d3
00008c94 6718	beq.s	Cbal_ChkExplode
00008c96 6b0c	bmi.s	loc_8CA4
00008c98 4a680010	tst.w	obVelX(a0)
00008c9c 6a10	bpl.s	Cbal_ChkExplode
00008c9e 44680010	neg.w	obVelX(a0)
00008ca2 600a	bra.s	Cbal_ChkExplode
00008ca4 4a680010	tst.w	obVelX(a0)
00008ca8 6b04	bmi.s	Cbal_ChkExplode
00008caa 44680010	neg.w	obVelX(a0)
00008cae 53680030	subq.w	#1,cbal_time(a0)
00008cb2 6a16	bpl.s	Cbal_Animate
00008cc0 117c00000024	move.b	#0,obRoutine(a0)
00008cc6 6000012e	bra.w	Explosion
00008cca 5328001e	subq.b	#1,obTimeFrame(a0)
00008cce 6a0c	bpl.s	Cbal_Display
00008cd0 117c0005001e	move.b	#5,obTimeFrame(a0)
00008cd6 08680000001a	bchg	#0,obFrame(a0)
00008cdc 61004926	bsr.w	DisplaySprite
00008ce0 3038f72e	move.w	(v_limitbtm2).w,d0
00008ce4 064000e0	addi.w	#$E0,d0
00008ce8 b068000c	cmp.w	obY(a0),d0
00008cec 65004952	blo.w	DeleteObject
00008cf0 4e75	rts	
00008cf2 7000	moveq	#0,d0
00008cf4 10280024	move.b	obRoutine(a0),d0
00008cf8 323b0006	move.w	UnkExpl_Index(pc,d0.w),d1
00008cfc 4efb1002	jmp	UnkExpl_Index(pc,d1.w)
00008d04 54280024	addq.b	#2,obRoutine(a0)
00008d08 217c00008ea60004	move.l	#Map_UnkExplode,obMap(a0)
00008d10 317c041c0002	move.w	#ArtTile_UnusedExplosion,obGfx(a0)
00008d16 117c00040001	move.b	#4,obRender(a0)
00008d1c 117c00010018	move.b	#1,obPriority(a0)
00008d22 117c00000020	move.b	#0,obColType(a0)
00008d28 117c000c0019	move.b	#$C,obActWid(a0)
00008d2e 117c0009001e	move.b	#9,obTimeFrame(a0)
00008d34 117c0000001a	move.b	#0,obFrame(a0)
00008d3a 303c00a5	move.w	#sfx_A5,d0
00008d3e 4eb90000139c	jsr	(QueueSound2).l
00008d44 5328001e	subq.b	#1,obTimeFrame(a0)
00008d48 6a14	bpl.s	.display
00008d4a 117c0009001e	move.b	#9,obTimeFrame(a0)
00008d50 5228001a	addq.b	#1,obFrame(a0)
00008d54 0c280004001a	cmpi.b	#4,obFrame(a0)
00008d5a 670048e4	beq.w	DeleteObject
00008d5e 600048a4	bra.w	DisplaySprite
00008d62 7000	moveq	#0,d0
00008d64 10280024	move.b	obRoutine(a0),d0
00008d68 323b0006	move.w	ExItem_Index(pc,d0.w),d1
00008d6c 4efb1002	jmp	ExItem_Index(pc,d1.w)
00008d76 54280024	addq.b	#2,obRoutine(a0)
00008d7a 61004d10	bsr.w	FindFreeObj
00008d7e 6618	bne.s	ExItem_Main
00008d86 336800080008	move.w	obX(a0),obX(a1)
00008d8c 3368000c000c	move.w	obY(a0),obY(a1)
00008d92 3368003e003e	move.w	objoff_3E(a0),objoff_3E(a1)
00008d98 54280024	addq.b	#2,obRoutine(a0)
00008d9c 217c00008ec60004	move.l	#Map_ExplodeItem,obMap(a0)
00008da4 317c05a00002	move.w	#ArtTile_Explosion,obGfx(a0)
00008daa 117c00040001	move.b	#4,obRender(a0)
00008db0 117c00010018	move.b	#1,obPriority(a0)
00008db6 117c00000020	move.b	#0,obColType(a0)
00008dbc 117c000c0019	move.b	#$C,obActWid(a0)
00008dc2 117c0007001e	move.b	#7,obTimeFrame(a0)
00008dc8 117c0000001a	move.b	#0,obFrame(a0)
00008dce 303c00c1	move.w	#sfx_BreakItem,d0
00008dd2 4eb90000139c	jsr	(QueueSound2).l
00008dd8 5328001e	subq.b	#1,obTimeFrame(a0)
00008ddc 6a14	bpl.s	.display
00008dde 117c0007001e	move.b	#7,obTimeFrame(a0)
00008de4 5228001a	addq.b	#1,obFrame(a0)
00008de8 0c280005001a	cmpi.b	#5,obFrame(a0)
00008dee 67004850	beq.w	DeleteObject
00008df2 60004810	bra.w	DisplaySprite
00008df6 7000	moveq	#0,d0
00008df8 10280024	move.b	obRoutine(a0),d0
00008dfc 323b0006	move.w	Expl_Index(pc,d0.w),d1
00008e00 4efb1002	jmp	Expl_Index(pc,d1.w)
00008e08 54280024	addq.b	#2,obRoutine(a0)
00008e0c 217c00008f0c0004	move.l	#Map_ExplodeBomb,obMap(a0)
00008e14 317c05a00002	move.w	#ArtTile_Explosion,obGfx(a0)
00008e1a 117c00040001	move.b	#4,obRender(a0)
00008e20 117c00010018	move.b	#1,obPriority(a0)
00008e26 117c00000020	move.b	#0,obColType(a0)
00008e2c 117c000c0019	move.b	#$C,obActWid(a0)
00008e32 117c0007001e	move.b	#7,obTimeFrame(a0)
00008e38 117c0000001a	move.b	#0,obFrame(a0)
00008e3e 303c00c4	move.w	#sfx_Bomb,d0
00008e42 4ef90000139c	jmp	(QueueSound2).l
00008f22 7000	moveq	#0,d0
00008f24 10280024	move.b	obRoutine(a0),d0
00008f28 323b0006	move.w	Anml_Index(pc,d0.w),d1
00008f2c 4efb1002	jmp	Anml_Index(pc,d1.w)
0000900c 4a280028	tst.b	obSubtype(a0)
00009010 67000064	beq.w	Anml_FromEnemy
00009014 7000	moveq	#0,d0
00009016 10280028	move.b	obSubtype(a0),d0
0000901a d040	add.w	d0,d0
0000901c 11400024	move.b	d0,obRoutine(a0)
00009020 04400014	subi.w	#$14,d0
00009024 317b00d00002	move.w	Anml_EndVram(pc,d0.w),obGfx(a0)
0000902a d040	add.w	d0,d0
0000902c 217b009c0004	move.l	Anml_EndMap(pc,d0.w),obMap(a0)
00009032 43faff6a	lea	Anml_EndSpeed(pc),a1
00009036 317100000032	move.w	(a1,d0.w),objoff_32(a0)
0000903c 317100000010	move.w	(a1,d0.w),obVelX(a0)
00009042 317100020034	move.w	2(a1,d0.w),objoff_34(a0)
00009048 317100020012	move.w	2(a1,d0.w),obVelY(a0)
0000904e 117c000c0016	move.b	#$C,obHeight(a0)
00009054 117c00040001	move.b	#4,obRender(a0)
0000905a 08e800000001	bset	#0,obRender(a0)
00009060 117c00060018	move.b	#6,obPriority(a0)
00009066 117c00080019	move.b	#8,obActWid(a0)
0000906c 117c0007001e	move.b	#7,obTimeFrame(a0)
00009072 60004590	bra.w	DisplaySprite
00009076 54280024	addq.b	#2,obRoutine(a0)
0000907a 61009938	bsr.w	RandomNumber
0000907e 02400001	andi.w	#1,d0
00009082 7200	moveq	#0,d1
00009084 1238fe10	move.b	(v_zone).w,d1
00009088 d241	add.w	d1,d1
0000908a d240	add.w	d0,d1
0000908c 43fafecc	lea	Anml_VarIndex(pc),a1
00009090 10311000	move.b	(a1,d1.w),d0
00009094 11400030	move.b	d0,objoff_30(a0)
00009098 e748	lsl.w	#3,d0
0000909a 43fafeca	lea	Anml_Variables(pc),a1
0000909e d2c0	adda.w	d0,a1
000090a0 31590032	move.w	(a1)+,objoff_32(a0)
000090a4 31590034	move.w	(a1)+,objoff_34(a0)
000090a8 21590004	move.l	(a1)+,obMap(a0)
000090ac 317c05800002	move.w	#ArtTile_Animal_1,obGfx(a0)
000090b2 082800000030	btst	#0,objoff_30(a0)
000090b8 6706	beq.s	loc_90C0
000090ba 317c05920002	move.w	#ArtTile_Animal_2,obGfx(a0)
000090c0 117c000c0016	move.b	#$C,obHeight(a0)
000090c6 117c00040001	move.b	#4,obRender(a0)
000090cc 08e800000001	bset	#0,obRender(a0)
000090d2 117c00060018	move.b	#6,obPriority(a0)
000090d8 117c00080019	move.b	#8,obActWid(a0)
000090de 117c0007001e	move.b	#7,obTimeFrame(a0)
000090e4 117c0002001a	move.b	#2,obFrame(a0)
000090ea 317cfc000012	move.w	#-$400,obVelY(a0)
000090f0 4a38f7a7	tst.b	(v_bossstatus).w
000090f4 6626	bne.s	loc_911C
000090f6 61004994	bsr.w	FindFreeObj
000090fa 661c	bne.s	Anml_Display
00009102 336800080008	move.w	obX(a0),obX(a1)
00009108 3368000c000c	move.w	obY(a0),obY(a1)
0000910e 3028003e	move.w	objoff_3E(a0),d0
00009112 e248	lsr.w	#1,d0
00009114 1340001a	move.b	d0,obFrame(a1)
00009118 600044ea	bra.w	DisplaySprite
0000911c 117c00120024	move.b	#$12,obRoutine(a0)
00009122 42680010	clr.w	obVelX(a0)
00009126 600044dc	bra.w	DisplaySprite
0000912a 4a280001	tst.b	obRender(a0)
0000912e 6a004510	bpl.w	DeleteObject
00009132 6100447e	bsr.w	ObjectFall
00009136 4a680012	tst.w	obVelY(a0)
0000913a 6b44	bmi.s	loc_9180
0000913c 4eb900014e18	jsr	(ObjFloorDist).l
00009142 4a41	tst.w	d1
00009144 6a3a	bpl.s	loc_9180
00009146 d368000c	add.w	d1,obY(a0)
0000914a 316800320010	move.w	objoff_32(a0),obVelX(a0)
00009150 316800340012	move.w	objoff_34(a0),obVelY(a0)
00009156 117c0001001a	move.b	#1,obFrame(a0)
0000915c 10280030	move.b	objoff_30(a0),d0
00009160 d000	add.b	d0,d0
00009162 5800	addq.b	#4,d0
00009164 11400024	move.b	d0,obRoutine(a0)
00009168 4a38f7a7	tst.b	(v_bossstatus).w
0000916c 6712	beq.s	loc_9180
0000916e 08380004fe0f	btst	#4,(v_vblank_byte).w
00009174 670a	beq.s	loc_9180
00009176 44680010	neg.w	obVelX(a0)
0000917a 086800000001	bchg	#0,obRender(a0)
00009180 60004482	bra.w	DisplaySprite
00009184 6100442c	bsr.w	ObjectFall
00009188 117c0001001a	move.b	#1,obFrame(a0)
0000918e 4a680012	tst.w	obVelY(a0)
00009192 6b1a	bmi.s	loc_91AE
00009194 117c0000001a	move.b	#0,obFrame(a0)
0000919a 4eb900014e18	jsr	(ObjFloorDist).l
000091a0 4a41	tst.w	d1
000091a2 6a0a	bpl.s	loc_91AE
000091a4 d368000c	add.w	d1,obY(a0)
000091a8 316800340012	move.w	objoff_34(a0),obVelY(a0)
000091ae 4a280028	tst.b	obSubtype(a0)
000091b2 6670	bne.s	loc_9224
000091b4 4a280001	tst.b	obRender(a0)
000091b8 6a004486	bpl.w	DeleteObject
000091bc 60004446	bra.w	DisplaySprite
000091c0 6100441c	bsr.w	SpeedToPos
000091c4 066800180012	addi.w	#$18,obVelY(a0)
000091ca 4a680012	tst.w	obVelY(a0)
000091ce 6b2c	bmi.s	loc_91FC
000091d0 4eb900014e18	jsr	(ObjFloorDist).l
000091d6 4a41	tst.w	d1
000091d8 6a22	bpl.s	loc_91FC
000091da d368000c	add.w	d1,obY(a0)
000091de 316800340012	move.w	objoff_34(a0),obVelY(a0)
000091e4 4a280028	tst.b	obSubtype(a0)
000091e8 6712	beq.s	loc_91FC
000091ea 0c28000a0028	cmpi.b	#$A,obSubtype(a0)
000091f0 670a	beq.s	loc_91FC
000091f2 44680010	neg.w	obVelX(a0)
000091f6 086800000001	bchg	#0,obRender(a0)
000091fc 5328001e	subq.b	#1,obTimeFrame(a0)
00009200 6a10	bpl.s	loc_9212
00009202 117c0001001e	move.b	#1,obTimeFrame(a0)
00009208 5228001a	addq.b	#1,obFrame(a0)
0000920c 02280001001a	andi.b	#1,obFrame(a0)
00009212 4a280028	tst.b	obSubtype(a0)
00009216 660c	bne.s	loc_9224
00009218 4a280001	tst.b	obRender(a0)
0000921c 6a004422	bpl.w	DeleteObject
00009220 600043e2	bra.w	DisplaySprite
00009224 30280008	move.w	obX(a0),d0
00009228 9078d008	sub.w	(v_player+obX).w,d0
0000922c 650e	bcs.s	loc_923C
0000922e 04400180	subi.w	#$180,d0
00009232 6a08	bpl.s	loc_923C
00009234 4a280001	tst.b	obRender(a0)
00009238 6a004406	bpl.w	DeleteObject
0000923c 600043c6	bra.w	DisplaySprite
00009240 4a280001	tst.b	obRender(a0)
00009244 6a0043fa	bpl.w	DeleteObject
00009248 53680036	subq.w	#1,objoff_36(a0)
0000924c 6600000e	bne.w	loc_925C
00009250 117c00020024	move.b	#2,obRoutine(a0)
00009256 117c00030018	move.b	#3,obPriority(a0)
0000925c 600043a6	bra.w	DisplaySprite
00009260 610001a2	bsr.w	sub_9404
00009264 6416	bcc.s	loc_927C
00009266 316800320010	move.w	objoff_32(a0),obVelX(a0)
0000926c 316800340012	move.w	objoff_34(a0),obVelY(a0)
00009272 117c000e0024	move.b	#$E,obRoutine(a0)
00009278 6000ff46	bra.w	Anml_Type1
0000927c 6000ffa6	bra.w	loc_9224
00009280 61000182	bsr.w	sub_9404
00009284 6a30	bpl.s	loc_92B6
00009286 42680010	clr.w	obVelX(a0)
0000928a 42680032	clr.w	objoff_32(a0)
0000928e 6100434e	bsr.w	SpeedToPos
00009292 066800180012	addi.w	#$18,obVelY(a0)
00009298 6100012a	bsr.w	loc_93C4
0000929c 6100014e	bsr.w	loc_93EC
000092a0 5328001e	subq.b	#1,obTimeFrame(a0)
000092a4 6a10	bpl.s	loc_92B6
000092a6 117c0001001e	move.b	#1,obTimeFrame(a0)
000092ac 5228001a	addq.b	#1,obFrame(a0)
000092b0 02280001001a	andi.b	#1,obFrame(a0)
000092b6 6000ff6c	bra.w	loc_9224
000092ba 61000148	bsr.w	sub_9404
000092be 6a50	bpl.s	loc_9310
000092c0 316800320010	move.w	objoff_32(a0),obVelX(a0)
000092c6 316800340012	move.w	objoff_34(a0),obVelY(a0)
000092cc 117c00040024	move.b	#4,obRoutine(a0)
000092d2 6000feb0	bra.w	Anml_Type0
000092d6 610042da	bsr.w	ObjectFall
000092da 117c0001001a	move.b	#1,obFrame(a0)
000092e0 4a680012	tst.w	obVelY(a0)
000092e4 6b2a	bmi.s	loc_9310
000092e6 117c0000001a	move.b	#0,obFrame(a0)
000092ec 4eb900014e18	jsr	(ObjFloorDist).l
000092f2 4a41	tst.w	d1
000092f4 6a1a	bpl.s	loc_9310
000092f6 46280029	not.b	objoff_29(a0)
000092fa 660a	bne.s	loc_9306
000092fc 44680010	neg.w	obVelX(a0)
00009300 086800000001	bchg	#0,obRender(a0)
00009306 d368000c	add.w	d1,obY(a0)
0000930a 316800340012	move.w	objoff_34(a0),obVelY(a0)
00009310 6000ff12	bra.w	loc_9224
00009314 610000ee	bsr.w	sub_9404
00009318 6a14	bpl.s	loc_932E
0000931a 42680010	clr.w	obVelX(a0)
0000931e 42680032	clr.w	objoff_32(a0)
00009322 6100428e	bsr.w	ObjectFall
00009326 6100009c	bsr.w	loc_93C4
0000932a 610000c0	bsr.w	loc_93EC
0000932e 6000fef4	bra.w	loc_9224
00009332 610000d0	bsr.w	sub_9404
00009336 6a34	bpl.s	loc_936C
00009338 61004278	bsr.w	ObjectFall
0000933c 117c0001001a	move.b	#1,obFrame(a0)
00009342 4a680012	tst.w	obVelY(a0)
00009346 6b24	bmi.s	loc_936C
00009348 117c0000001a	move.b	#0,obFrame(a0)
0000934e 4eb900014e18	jsr	(ObjFloorDist).l
00009354 4a41	tst.w	d1
00009356 6a14	bpl.s	loc_936C
00009358 44680010	neg.w	obVelX(a0)
0000935c 086800000001	bchg	#0,obRender(a0)
00009362 d368000c	add.w	d1,obY(a0)
00009366 316800340012	move.w	objoff_34(a0),obVelY(a0)
0000936c 6000feb6	bra.w	loc_9224
00009370 61000092	bsr.w	sub_9404
00009374 6a4a	bpl.s	loc_93C0
00009376 61004266	bsr.w	SpeedToPos
0000937a 066800180012	addi.w	#$18,obVelY(a0)
00009380 4a680012	tst.w	obVelY(a0)
00009384 6b24	bmi.s	loc_93AA
00009386 4eb900014e18	jsr	(ObjFloorDist).l
0000938c 4a41	tst.w	d1
0000938e 6a1a	bpl.s	loc_93AA
00009390 46280029	not.b	objoff_29(a0)
00009394 660a	bne.s	loc_93A0
00009396 44680010	neg.w	obVelX(a0)
0000939a 086800000001	bchg	#0,obRender(a0)
000093a0 d368000c	add.w	d1,obY(a0)
000093a4 316800340012	move.w	objoff_34(a0),obVelY(a0)
000093aa 5328001e	subq.b	#1,obTimeFrame(a0)
000093ae 6a10	bpl.s	loc_93C0
000093b0 117c0001001e	move.b	#1,obTimeFrame(a0)
000093b6 5228001a	addq.b	#1,obFrame(a0)
000093ba 02280001001a	andi.b	#1,obFrame(a0)
000093c0 6000fe62	bra.w	loc_9224
000093c4 117c0001001a	move.b	#1,obFrame(a0)
000093ca 4a680012	tst.w	obVelY(a0)
000093ce 6b1a	bmi.s	locret_93EA
000093d0 117c0000001a	move.b	#0,obFrame(a0)
000093d6 4eb900014e18	jsr	(ObjFloorDist).l
000093dc 4a41	tst.w	d1
000093de 6a0a	bpl.s	locret_93EA
000093e0 d368000c	add.w	d1,obY(a0)
000093e4 316800340012	move.w	objoff_34(a0),obVelY(a0)
000093ea 4e75	rts	
000093ec 08e800000001	bset	#0,obRender(a0)
000093f2 30280008	move.w	obX(a0),d0
000093f6 9078d008	sub.w	(v_player+obX).w,d0
000093fa 6406	bcc.s	locret_9402
000093fc 08a800000001	bclr	#0,obRender(a0)
00009402 4e75	rts	
00009404 3038d008	move.w	(v_player+obX).w,d0
00009408 90680008	sub.w	obX(a0),d0
0000940c 044000b8	subi.w	#$B8,d0
00009410 4e75	rts	
00009412 7000	moveq	#0,d0
00009414 10280024	move.b	obRoutine(a0),d0
00009418 323b000a	move.w	Poi_Index(pc,d0.w),d1
0000941c 4ebb1006	jsr	Poi_Index(pc,d1.w)
00009420 600041e2	bra.w	DisplaySprite
00009428 54280024	addq.b	#2,obRoutine(a0)
0000942c 217c000094ae0004	move.l	#Map_Poi,obMap(a0)
00009434 317c27970002	move.w	#ArtTile_Points|Tile_Pal2,obGfx(a0)
0000943a 117c00040001	move.b	#4,obRender(a0)
00009440 117c00010018	move.b	#1,obPriority(a0)
00009446 117c00080019	move.b	#8,obActWid(a0)
0000944c 317cfd000012	move.w	#-$300,obVelY(a0)
00009452 4a680012	tst.w	obVelY(a0)
00009456 6a0041e8	bpl.w	DeleteObject
0000945a 61004182	bsr.w	SpeedToPos
0000945e 066800180012	addi.w	#$18,obVelY(a0)
00009464 4e75	rts	
000094f0 7000	moveq	#0,d0
000094f2 10280024	move.b	obRoutine(a0),d0
000094f6 323b0006	move.w	Crab_Index(pc,d0.w),d1
000094fa 4efb1002	jmp	Crab_Index(pc,d1.w)
00009508 117c00100016	move.b	#$10,obHeight(a0)
0000950e 117c00080017	move.b	#8,obWidth(a0)
00009514 217c000097500004	move.l	#Map_Crab,obMap(a0)
0000951c 317c04000002	move.w	#ArtTile_Crabmeat,obGfx(a0)
00009522 117c00040001	move.b	#4,obRender(a0)
00009528 117c00030018	move.b	#3,obPriority(a0)
0000952e 117c00060020	move.b	#6,obColType(a0)
00009534 117c00150019	move.b	#$15,obActWid(a0)
0000953a 61004076	bsr.w	ObjectFall
0000953e 4eb900014e18	jsr	(ObjFloorDist).l
00009544 4a41	tst.w	d1
00009546 6a12	bpl.s	.floornotfound
00009548 d368000c	add.w	d1,obY(a0)
0000954c 11430026	move.b	d3,obAngle(a0)
00009550 317c00000012	move.w	#0,obVelY(a0)
00009556 54280024	addq.b	#2,obRoutine(a0)
0000955a 4e75	rts	
0000955c 7000	moveq	#0,d0
0000955e 10280025	move.b	ob2ndRout(a0),d0
00009562 323b0014	move.w	.index(pc,d0.w),d1
00009566 4ebb1010	jsr	.index(pc,d1.w)
0000956a 43f90000971a	lea	(Ani_Crab).l,a1
00009570 610011a6	bsr.w	AnimateSprite
00009574 60006136	bra.w	RememberState
0000957c 53680030	subq.w	#1,crab_timedelay(a0)
00009580 6a34	bpl.s	.dontmove
00009582 4a280001	tst.b	obRender(a0)
00009586 6a08	bpl.s	.movecrab
00009588 086800010032	bchg	#1,crab_mode(a0)
0000958e 6628	bne.s	.fire
00009590 54280025	addq.b	#2,ob2ndRout(a0)
00009594 317c007f0030	move.w	#127,crab_timedelay(a0)
0000959a 317c00800010	move.w	#$80,obVelX(a0)
000095a0 610000e6	bsr.w	Crab_SetAni
000095a4 5600	addq.b	#3,d0
000095a6 1140001c	move.b	d0,obAnim(a0)
000095aa 086800000022	bchg	#0,obStatus(a0)
000095b0 6604	bne.s	.noflip
000095b2 44680010	neg.w	obVelX(a0)
000095b6 4e75	rts	
000095b8 317c003b0030	move.w	#59,crab_timedelay(a0)
000095be 117c0006001c	move.b	#6,obAnim(a0)
000095c4 610044c6	bsr.w	FindFreeObj
000095c8 6624	bne.s	.failleft
000095d0 137c00060024	move.b	#6,obRoutine(a1)
000095d6 336800080008	move.w	obX(a0),obX(a1)
000095dc 046900100008	subi.w	#$10,obX(a1)
000095e2 3368000c000c	move.w	obY(a0),obY(a1)
000095e8 337cff000010	move.w	#-$100,obVelX(a1)
000095ee 6100449c	bsr.w	FindFreeObj
000095f2 6624	bne.s	.failright
000095fa 137c00060024	move.b	#6,obRoutine(a1)
00009600 336800080008	move.w	obX(a0),obX(a1)
00009606 066900100008	addi.w	#$10,obX(a1)
0000960c 3368000c000c	move.w	obY(a0),obY(a1)
00009612 337c01000010	move.w	#$100,obVelX(a1)
00009618 4e75	rts	
0000961a 53680030	subq.w	#1,crab_timedelay(a0)
0000961e 6b4e	bmi.s	loc_966E
00009620 61003fbc	bsr.w	SpeedToPos
00009624 086800000032	bchg	#0,crab_mode(a0)
0000962a 6628	bne.s	loc_9654
0000962c 36280008	move.w	obX(a0),d3
00009630 06430010	addi.w	#$10,d3
00009634 082800000022	btst	#0,obStatus(a0)
0000963a 6704	beq.s	loc_9640
0000963c 04430020	subi.w	#$20,d3
00009640 4eb900014e1c	jsr	(ObjFloorDist2).l
00009646 0c41fff8	cmpi.w	#-8,d1
0000964a 6d22	blt.s	loc_966E
0000964c 0c41000c	cmpi.w	#$C,d1
00009650 6c1c	bge.s	loc_966E
00009652 4e75	rts	
00009654 4eb900014e18	jsr	(ObjFloorDist).l
0000965a d368000c	add.w	d1,obY(a0)
0000965e 11430026	move.b	d3,obAngle(a0)
00009662 61000024	bsr.w	Crab_SetAni
00009666 5600	addq.b	#3,d0
00009668 1140001c	move.b	d0,obAnim(a0)
0000966c 4e75	rts	
0000966e 55280025	subq.b	#2,ob2ndRout(a0)
00009672 317c003b0030	move.w	#59,crab_timedelay(a0)
00009678 317c00000010	move.w	#0,obVelX(a0)
0000967e 61000008	bsr.w	Crab_SetAni
00009682 1140001c	move.b	d0,obAnim(a0)
00009686 4e75	rts	
00009688 7000	moveq	#0,d0
0000968a 16280026	move.b	obAngle(a0),d3
0000968e 6b14	bmi.s	loc_96A4
00009690 0c030006	cmpi.b	#6,d3
00009694 650c	blo.s	locret_96A2
00009696 7001	moveq	#1,d0
00009698 082800000022	btst	#0,obStatus(a0)
0000969e 6602	bne.s	locret_96A2
000096a0 7002	moveq	#2,d0
000096a2 4e75	rts	
000096a4 0c0300fa	cmpi.b	#-6,d3
000096a8 620c	bhi.s	locret_96B6
000096aa 7002	moveq	#2,d0
000096ac 082800000022	btst	#0,obStatus(a0)
000096b2 6602	bne.s	locret_96B6
000096b4 7001	moveq	#1,d0
000096b6 4e75	rts	
000096b8 61003f86	bsr.w	DeleteObject
000096bc 4e75	rts	
000096be 54280024	addq.b	#2,obRoutine(a0)
000096c2 217c000097500004	move.l	#Map_Crab,obMap(a0)
000096ca 317c04000002	move.w	#ArtTile_Crabmeat,obGfx(a0)
000096d0 117c00040001	move.b	#4,obRender(a0)
000096d6 117c00030018	move.b	#3,obPriority(a0)
000096dc 117c00870020	move.b	#$87,obColType(a0)
000096e2 117c00080019	move.b	#8,obActWid(a0)
000096e8 317cfc000012	move.w	#-$400,obVelY(a0)
000096ee 117c0007001c	move.b	#7,obAnim(a0)
000096f4 43f90000971a	lea	(Ani_Crab).l,a1
000096fa 6100101c	bsr.w	AnimateSprite
000096fe 61003eb2	bsr.w	ObjectFall
00009702 61003f00	bsr.w	DisplaySprite
00009706 3038f72e	move.w	(v_limitbtm2).w,d0
0000970a 064000e0	addi.w	#$E0,d0
0000970e b068000c	cmp.w	obY(a0),d0
00009712 6502	blo.s	.delete
00009714 4e75	rts	
00009716 60003f28	bra.w	DeleteObject
000097de 7000	moveq	#0,d0
000097e0 10280024	move.b	obRoutine(a0),d0
000097e4 323b0006	move.w	Buzz_Index(pc,d0.w),d1
000097e8 4efb1002	jmp	Buzz_Index(pc,d1.w)
000097f2 54280024	addq.b	#2,obRoutine(a0)
000097f6 217c00009a360004	move.l	#Map_Buzz,obMap(a0)
000097fe 317c04440002	move.w	#ArtTile_Buzz_Bomber,obGfx(a0)
00009804 117c00040001	move.b	#4,obRender(a0)
0000980a 117c00030018	move.b	#3,obPriority(a0)
00009810 117c00080020	move.b	#8,obColType(a0)
00009816 117c00180019	move.b	#$18,obActWid(a0)
0000981c 7000	moveq	#0,d0
0000981e 10280025	move.b	ob2ndRout(a0),d0
00009822 323b0014	move.w	.index(pc,d0.w),d1
00009826 4ebb1010	jsr	.index(pc,d1.w)
0000982a 43f900009a18	lea	(Ani_Buzz).l,a1
00009830 61000ee6	bsr.w	AnimateSprite
00009834 60005e76	bra.w	RememberState
0000983c 53680032	subq.w	#1,buzz_timedelay(a0)
00009840 6a2a	bpl.s	.noflip
00009842 082800010034	btst	#1,buzz_buzzstatus(a0)
00009848 6624	bne.s	.fire
0000984a 54280025	addq.b	#2,ob2ndRout(a0)
0000984e 317c007f0032	move.w	#127,buzz_timedelay(a0)
00009854 317c04000010	move.w	#$400,obVelX(a0)
0000985a 117c0001001c	move.b	#1,obAnim(a0)
00009860 082800000022	btst	#0,obStatus(a0)
00009866 6604	bne.s	.noflip
00009868 44680010	neg.w	obVelX(a0)
0000986c 4e75	rts	
0000986e 6100421c	bsr.w	FindFreeObj
00009872 665c	bne.s	.fail
0000987a 336800080008	move.w	obX(a0),obX(a1)
00009880 3368000c000c	move.w	obY(a0),obY(a1)
00009886 0669001c000c	addi.w	#$1C,obY(a1)
0000988c 337c02000012	move.w	#$200,obVelY(a1)
00009892 337c02000010	move.w	#$200,obVelX(a1)
00009898 303c0018	move.w	#$18,d0
0000989c 082800000022	btst	#0,obStatus(a0)
000098a2 6606	bne.s	.noflip2
000098a4 4440	neg.w	d0
000098a6 44690010	neg.w	obVelX(a1)
000098aa d1690008	add.w	d0,obX(a1)
000098ae 136800220022	move.b	obStatus(a0),obStatus(a1)
000098b4 337c000e0032	move.w	#$E,buzz_timedelay(a1)
000098ba 2348003c	move.l	a0,buzz_parent(a1)
000098be 117c00010034	move.b	#1,buzz_buzzstatus(a0)
000098c4 317c003b0032	move.w	#59,buzz_timedelay(a0)
000098ca 117c0002001c	move.b	#2,obAnim(a0)
000098d0 4e75	rts	
000098d2 53680032	subq.w	#1,buzz_timedelay(a0)
000098d6 6b30	bmi.s	.chgdirection
000098d8 61003d04	bsr.w	SpeedToPos
000098dc 4a280034	tst.b	buzz_buzzstatus(a0)
000098e0 6648	bne.s	.keepgoing
000098e2 3038d008	move.w	(v_player+obX).w,d0
000098e6 90680008	sub.w	obX(a0),d0
000098ea 6a02	bpl.s	.isleft
000098ec 4440	neg.w	d0
000098ee 0c400060	cmpi.w	#$60,d0
000098f2 6436	bhs.s	.keepgoing
000098f4 4a280001	tst.b	obRender(a0)
000098f8 6a30	bpl.s	.keepgoing
000098fa 117c00020034	move.b	#2,buzz_buzzstatus(a0)
00009900 317c001d0032	move.w	#29,buzz_timedelay(a0)
00009906 6012	bra.s	.stop
00009908 117c00000034	move.b	#0,buzz_buzzstatus(a0)
0000990e 086800000022	bchg	#0,obStatus(a0)
00009914 317c003b0032	move.w	#59,buzz_timedelay(a0)
0000991a 55280025	subq.b	#2,ob2ndRout(a0)
0000991e 317c00000010	move.w	#0,obVelX(a0)
00009924 117c0000001c	move.b	#0,obAnim(a0)
0000992a 4e75	rts	
0000992c 61003d12	bsr.w	DeleteObject
00009930 4e75	rts	
00009932 7000	moveq	#0,d0
00009934 10280024	move.b	obRoutine(a0),d0
00009938 323b0006	move.w	Msl_Index(pc,d0.w),d1
0000993c 4efb1002	jmp	Msl_Index(pc,d1.w)
0000994a 53680032	subq.w	#1,objoff_32(a0)
0000994e 6a54	bpl.s	Msl_ChkCancel
00009950 54280024	addq.b	#2,obRoutine(a0)
00009954 217c00009b060004	move.l	#Map_Missile,obMap(a0)
0000995c 317c24440002	move.w	#ArtTile_Buzz_Bomber|Tile_Pal2,obGfx(a0)
00009962 117c00040001	move.b	#4,obRender(a0)
00009968 117c00030018	move.b	#3,obPriority(a0)
0000996e 117c00080019	move.b	#8,obActWid(a0)
00009974 022800030022	andi.b	#3,obStatus(a0)
0000997a 4a280028	tst.b	obSubtype(a0)
0000997e 6714	beq.s	Msl_Animate
00009980 117c00080024	move.b	#8,obRoutine(a0)
00009986 117c00870020	move.b	#$87,obColType(a0)
0000998c 117c0001001c	move.b	#1,obAnim(a0)
00009992 6074	bra.s	Msl_Animate2
00009994 610e	bsr.s	Msl_ChkCancel
00009996 43f900009a2a	lea	(Ani_Missile).l,a1
0000999c 61000d7a	bsr.w	AnimateSprite
000099a0 60003c62	bra.w	DisplaySprite
000099a4 2268003c	movea.l	msl_parent(a0),a1
000099ae 6748	beq.s	Msl_Delete
000099b0 4e75	rts	
000099b2 082800070022	btst	#7,obStatus(a0)
000099b8 662e	bne.s	.explode
000099ba 117c00870020	move.b	#$87,obColType(a0)
000099c0 117c0001001c	move.b	#1,obAnim(a0)
000099c6 61003c16	bsr.w	SpeedToPos
000099ca 43f900009a2a	lea	(Ani_Missile).l,a1
000099d0 61000d46	bsr.w	AnimateSprite
000099d4 61003c2e	bsr.w	DisplaySprite
000099d8 3038f72e	move.w	(v_limitbtm2).w,d0
000099dc 064000e0	addi.w	#$E0,d0
000099e0 b068000c	cmp.w	obY(a0),d0
000099e4 6512	blo.s	Msl_Delete
000099e6 4e75	rts	
000099ee 117c00000024	move.b	#0,obRoutine(a0)
000099f4 6000f2fc	bra.w	UnusedExplosion
000099f8 61003c46	bsr.w	DeleteObject
000099fc 4e75	rts	
000099fe 4a280001	tst.b	obRender(a0)
00009a02 6af4	bpl.s	Msl_Delete
00009a04 61003bd8	bsr.w	SpeedToPos
00009a08 43f900009a2a	lea	(Ani_Missile).l,a1
00009a0e 61000d08	bsr.w	AnimateSprite
00009a12 61003bf0	bsr.w	DisplaySprite
00009a16 4e75	rts	
00009b26 7000	moveq	#0,d0
00009b28 10280024	move.b	obRoutine(a0),d0
00009b2c 323b0006	move.w	Ring_Index(pc,d0.w),d1
00009b30 4efb1002	jmp	Ring_Index(pc,d1.w)
00009b5e 45f8fc00	lea	(v_objstate).w,a2
00009b62 7000	moveq	#0,d0
00009b64 10280023	move.b	obRespawnNo(a0),d0
00009b68 45f20002	lea	2(a2,d0.w),a2
00009b6c 1812	move.b	(a2),d4
00009b6e 12280028	move.b	obSubtype(a0),d1
00009b72 1001	move.b	d1,d0
00009b74 02410007	andi.w	#7,d1
00009b78 0c410007	cmpi.w	#7,d1
00009b7c 6602	bne.s	loc_9B80
00009b7e 7206	moveq	#6,d1
00009b80 4841	swap	d1
00009b82 323c0000	move.w	#0,d1
00009b86 e808	lsr.b	#4,d0
00009b88 d040	add.w	d0,d0
00009b8a 1a3b00b2	move.b	Ring_PosData(pc,d0.w),d5
00009b8e 4885	ext.w	d5
00009b90 1c3b00ad	move.b	Ring_PosData+1(pc,d0.w),d6
00009b94 4886	ext.w	d6
00009b96 2248	movea.l	a0,a1
00009b98 34280008	move.w	obX(a0),d2
00009b9c 3628000c	move.w	obY(a0),d3
00009ba0 e20c	lsr.b	#1,d4
00009ba2 655e	bcs.s	loc_9C02
00009ba4 08920007	bclr	#7,(a2)
00009ba8 6010	bra.s	loc_9BBA
00009baa 4841	swap	d1
00009bac e20c	lsr.b	#1,d4
00009bae 6552	bcs.s	loc_9C02
00009bb0 08920007	bclr	#7,(a2)
00009bb4 61003ed6	bsr.w	FindFreeObj
00009bb8 6654	bne.s	loc_9C0E
00009bc0 54290024	addq.b	#2,obRoutine(a1)
00009bc4 33420008	move.w	d2,obX(a1)
00009bc8 336800080032	move.w	obX(a0),objoff_32(a1)
00009bce 3343000c	move.w	d3,obY(a1)
00009bd2 237c00009f920004	move.l	#Map_Ring,obMap(a1)
00009bda 337c27b20002	move.w	#ArtTile_Ring|Tile_Pal2,obGfx(a1)
00009be0 137c00040001	move.b	#4,obRender(a1)
00009be6 137c00020018	move.b	#2,obPriority(a1)
00009bec 137c00470020	move.b	#$47,obColType(a1)
00009bf2 137c00080019	move.b	#8,obActWid(a1)
00009bf8 136800230023	move.b	obRespawnNo(a0),obRespawnNo(a1)
00009bfe 13410034	move.b	d1,objoff_34(a1)
00009c02 5241	addq.w	#1,d1
00009c04 d445	add.w	d5,d2
00009c06 d646	add.w	d6,d3
00009c08 4841	swap	d1
00009c0a 51c9ff9e	dbf	d1,Ring_MakeRings
00009c0e 08120000	btst	#0,(a2)
00009c12 66003a2c	bne.w	DeleteObject
00009c16 1178fec3001a	move.b	(v_ani1_frame).w,obFrame(a0)
00009c1c 610039e6	bsr.w	DisplaySprite
00009c20 30280032	move.w	objoff_32(a0),d0
00009c24 0240ff80	andi.w	#$FF80,d0
00009c28 3238f700	move.w	(v_screenposx).w,d1
00009c2c 04410080	subi.w	#128,d1
00009c30 0241ff80	andi.w	#$FF80,d1
00009c34 9041	sub.w	d1,d0
00009c36 0c400280	cmpi.w	#128+320+192,d0
00009c3a 6236	bhi.s	Ring_Delete
00009c3c 4e75	rts	
00009c3e 54280024	addq.b	#2,obRoutine(a0)
00009c42 117c00000020	move.b	#0,obColType(a0)
00009c48 117c00010018	move.b	#1,obPriority(a0)
00009c4e 61000026	bsr.w	CollectRing
00009c52 45f8fc00	lea	(v_objstate).w,a2
00009c56 7000	moveq	#0,d0
00009c58 10280023	move.b	obRespawnNo(a0),d0
00009c5c 12280034	move.b	objoff_34(a0),d1
00009c60 03f20002	bset	d1,2(a2,d0.w)
00009c64 43f900009f8a	lea	(Ani_Ring).l,a1
00009c6a 61000aac	bsr.w	AnimateSprite
00009c6e 60003994	bra.w	DisplaySprite
00009c72 600039cc	bra.w	DeleteObject
00009c76 5278fe20	addq.w	#1,(v_rings).w
00009c7a 00380001fe1d	ori.b	#1,(f_ringcount).w
00009c80 303c00b5	move.w	#sfx_Ring,d0
00009c84 0c780064fe20	cmpi.w	#100,(v_rings).w
00009c8a 6524	blo.s	.playsnd
00009c8c 08f80001fe1b	bset	#1,(v_lifecount).w
00009c92 6710	beq.s	.got100
00009c94 0c7800c8fe20	cmpi.w	#200,(v_rings).w
00009c9a 6514	blo.s	.playsnd
00009c9c 08f80002fe1b	bset	#2,(v_lifecount).w
00009ca2 660c	bne.s	.playsnd
00009ca4 5238fe12	addq.b	#1,(v_lives).w
00009ca8 5238fe1c	addq.b	#1,(f_lifecount).w
00009cac 303c0088	move.w	#bgm_ExtraLife,d0
00009cb0 4ef90000139c	jmp	(QueueSound2).l
00009cb6 7000	moveq	#0,d0
00009cb8 10280024	move.b	obRoutine(a0),d0
00009cbc 323b0006	move.w	RLoss_Index(pc,d0.w),d1
00009cc0 4efb1002	jmp	RLoss_Index(pc,d1.w)
00009cce 2248	movea.l	a0,a1
00009cd0 7a00	moveq	#0,d5
00009cd2 3a38fe20	move.w	(v_rings).w,d5
00009cd6 7020	moveq	#32,d0
00009cd8 ba40	cmp.w	d0,d5
00009cda 6502	blo.s	.belowmax
00009cdc 3a00	move.w	d0,d5
00009cde 5345	subq.w	#1,d5
00009ce0 383c0288	move.w	#$288,d4
00009ce4 6008	bra.s	.makerings
00009ce6 61003da4	bsr.w	FindFreeObj
00009cea 66000086	bne.w	.resetcounter
00009cf4 54290024	addq.b	#2,obRoutine(a1)
00009cf8 137c00080016	move.b	#8,obHeight(a1)
00009cfe 137c00080017	move.b	#8,obWidth(a1)
00009d04 336800080008	move.w	obX(a0),obX(a1)
00009d0a 3368000c000c	move.w	obY(a0),obY(a1)
00009d10 237c00009f920004	move.l	#Map_Ring,obMap(a1)
00009d18 337c27b20002	move.w	#ArtTile_Ring|Tile_Pal2,obGfx(a1)
00009d1e 137c00040001	move.b	#4,obRender(a1)
00009d24 137c00030018	move.b	#3,obPriority(a1)
00009d2a 137c00470020	move.b	#$47,obColType(a1)
00009d30 137c00080019	move.b	#8,obActWid(a1)
00009d36 11fc00fffec6	move.b	#-1,(v_ani3_time).w
00009d3c 4a44	tst.w	d4
00009d3e 6b22	bmi.s	.loc_9D62
00009d40 3004	move.w	d4,d0
00009d42 61008c96	bsr.w	CalcSine
00009d46 3404	move.w	d4,d2
00009d48 e04a	lsr.w	#8,d2
00009d4a e560	asl.w	d2,d0
00009d4c e561	asl.w	d2,d1
00009d4e 3400	move.w	d0,d2
00009d50 3601	move.w	d1,d3
00009d52 06040010	addi.b	#$10,d4
00009d56 640a	bcc.s	.loc_9D62
00009d58 04440080	subi.w	#$80,d4
00009d5c 6404	bcc.s	.loc_9D62
00009d5e 383c0288	move.w	#$288,d4
00009d62 33420010	move.w	d2,obVelX(a1)
00009d66 33430012	move.w	d3,obVelY(a1)
00009d6a 4442	neg.w	d2
00009d6c 4444	neg.w	d4
00009d6e 51cdff76	dbf	d5,.loop
00009d72 31fc0000fe20	move.w	#0,(v_rings).w
00009d78 11fc0080fe1d	move.b	#$80,(f_ringcount).w
00009d7e 11fc0000fe1b	move.b	#0,(v_lifecount).w
00009d84 303c00c6	move.w	#sfx_RingLoss,d0
00009d88 4eb90000139c	jsr	(QueueSound2).l
00009d8e 1178fec7001a	move.b	(v_ani3_frame).w,obFrame(a0)
00009d94 61003848	bsr.w	SpeedToPos
00009d98 066800180012	addi.w	#$18,obVelY(a0)
00009d9e 6b28	bmi.s	.chkdel
00009da0 1038fe0f	move.b	(v_vblank_byte).w,d0
00009da4 d007	add.b	d7,d0
00009da6 02000003	andi.b	#3,d0
00009daa 661c	bne.s	.chkdel
00009dac 4eb900014e18	jsr	(ObjFloorDist).l
00009db2 4a41	tst.w	d1
00009db4 6a12	bpl.s	.chkdel
00009db6 d368000c	add.w	d1,obY(a0)
00009dba 30280012	move.w	obVelY(a0),d0
00009dbe e440	asr.w	#2,d0
00009dc0 91680012	sub.w	d0,obVelY(a0)
00009dc4 44680012	neg.w	obVelY(a0)
00009dc8 4a38fec6	tst.b	(v_ani3_time).w
00009dcc 6734	beq.s	RLoss_Delete
00009dce 3038f72e	move.w	(v_limitbtm2).w,d0
00009dd2 064000e0	addi.w	#$E0,d0
00009dd6 b068000c	cmp.w	obY(a0),d0
00009dda 6526	blo.s	RLoss_Delete
00009ddc 60003826	bra.w	DisplaySprite
00009de0 54280024	addq.b	#2,obRoutine(a0)
00009de4 117c00000020	move.b	#0,obColType(a0)
00009dea 117c00010018	move.b	#1,obPriority(a0)
00009df0 6100fe84	bsr.w	CollectRing
00009df4 43f900009f8a	lea	(Ani_Ring).l,a1
00009dfa 6100091c	bsr.w	AnimateSprite
00009dfe 60003804	bra.w	DisplaySprite
00009e02 6000383c	bra.w	DeleteObject
00009e06 7000	moveq	#0,d0
00009e08 10280024	move.b	obRoutine(a0),d0
00009e0c 323b0006	move.w	GRing_Index(pc,d0.w),d1
00009e10 4efb1002	jmp	GRing_Index(pc,d1.w)
00009e1c 217c00009fd20004	move.l	#Map_GRing,obMap(a0)
00009e24 317c24000002	move.w	#ArtTile_Giant_Ring|Tile_Pal2,obGfx(a0)
00009e2a 002800040001	ori.b	#4,obRender(a0)
00009e30 117c00400019	move.b	#$40,obActWid(a0)
00009e36 4a280001	tst.b	obRender(a0)
00009e3a 6a2a	bpl.s	GRing_Animate
00009e3c 0c380006fe57	cmpi.b	#6,(v_emeralds).w
00009e42 6700008e	beq.w	GRing_Delete
00009e46 0c780032fe20	cmpi.w	#50,(v_rings).w
00009e4c 6402	bhs.s	GRing_Okay
00009e4e 4e75	rts	
00009e50 54280024	addq.b	#2,obRoutine(a0)
00009e54 117c00020018	move.b	#2,obPriority(a0)
00009e5a 117c00520020	move.b	#$52,obColType(a0)
00009e60 31fc0c40f7be	move.w	#$C40,(v_gfxbigring).w
00009e66 1178fec3001a	move.b	(v_ani1_frame).w,obFrame(a0)
00009e6c 30280008	move.w	obX(a0),d0
00009e70 0240ff80	andi.w	#$FF80,d0
00009e74 3238f700	move.w	(v_screenposx).w,d1
00009e78 04410080	subi.w	#128,d1
00009e7c 0241ff80	andi.w	#$FF80,d1
00009e80 9041	sub.w	d1,d0
00009e82 0c400280	cmpi.w	#128+320+192,d0
00009e86 620037b8	bhi.w	DeleteObject
00009e8a 60003778	bra.w	DisplaySprite
00009e8e 55280024	subq.b	#2,obRoutine(a0)
00009e92 117c00000020	move.b	#0,obColType(a0)
00009e98 61003bf2	bsr.w	FindFreeObj
00009e9c 66000028	bne.w	GRing_PlaySnd
00009ea6 336800080008	move.w	obX(a0),obX(a1)
00009eac 3368000c000c	move.w	obY(a0),obY(a1)
00009eb2 2348003c	move.l	a0,objoff_3C(a1)
00009eb6 3038d008	move.w	(v_player+obX).w,d0
00009eba b0680008	cmp.w	obX(a0),d0
00009ebe 6506	blo.s	GRing_PlaySnd
00009ec0 08e900000001	bset	#0,obRender(a1)
00009ec6 303c00c3	move.w	#sfx_GiantRing,d0
00009eca 4eb90000139c	jsr	(QueueSound2).l
00009ed0 6094	bra.s	GRing_Animate
00009ed2 6000376c	bra.w	DeleteObject
00009ed6 7000	moveq	#0,d0
00009ed8 10280024	move.b	obRoutine(a0),d0
00009edc 323b0006	move.w	Flash_Index(pc,d0.w),d1
00009ee0 4efb1002	jmp	Flash_Index(pc,d1.w)
00009eea 54280024	addq.b	#2,obRoutine(a0)
00009eee 217c0000a0740004	move.l	#Map_Flash,obMap(a0)
00009ef6 317c24620002	move.w	#ArtTile_Giant_Ring_Flash|Tile_Pal2,obGfx(a0)
00009efc 002800040001	ori.b	#4,obRender(a0)
00009f02 117c00000018	move.b	#0,obPriority(a0)
00009f08 117c00200019	move.b	#$20,obActWid(a0)
00009f0e 117c00ff001a	move.b	#$FF,obFrame(a0)
00009f14 6122	bsr.s	Flash_Collect
00009f16 30280008	move.w	obX(a0),d0
00009f1a 0240ff80	andi.w	#$FF80,d0
00009f1e 3238f700	move.w	(v_screenposx).w,d1
00009f22 04410080	subi.w	#128,d1
00009f26 0241ff80	andi.w	#$FF80,d1
00009f2a 9041	sub.w	d1,d0
00009f2c 0c400280	cmpi.w	#128+320+192,d0
00009f30 6200370e	bhi.w	DeleteObject
00009f34 600036ce	bra.w	DisplaySprite
00009f38 5328001e	subq.b	#1,obTimeFrame(a0)
00009f3c 6a38	bpl.s	locret_9F76
00009f3e 117c0001001e	move.b	#1,obTimeFrame(a0)
00009f44 5228001a	addq.b	#1,obFrame(a0)
00009f48 0c280008001a	cmpi.b	#8,obFrame(a0)
00009f4e 6428	bhs.s	Flash_End
00009f50 0c280003001a	cmpi.b	#3,obFrame(a0)
00009f56 661e	bne.s	locret_9F76
00009f58 2268003c	movea.l	objoff_3C(a0),a1
00009f5c 137c00060024	move.b	#6,obRoutine(a1)
00009f62 11fc001cd01c	move.b	#id_Null,(v_player+obAnim).w
00009f68 11fc0001f7cd	move.b	#1,(f_bigring).w
00009f6e 4238fe2d	clr.b	(v_invinc).w
00009f72 4238fe2c	clr.b	(v_shield).w
00009f76 4e75	rts	
00009f78 54280024	addq.b	#2,obRoutine(a0)
00009f7c 31fc0000d000	move.w	#0,(v_player).w
00009f82 588f	addq.l	#4,sp
00009f84 4e75	rts	
00009f86 600036b8	bra.w	DeleteObject
0000a118 7000	moveq	#0,d0
0000a11a 10280024	move.b	obRoutine(a0),d0
0000a11e 323b0006	move.w	Mon_Index(pc,d0.w),d1
0000a122 4efb1002	jmp	Mon_Index(pc,d1.w)
0000a130 54280024	addq.b	#2,obRoutine(a0)
0000a134 117c000e0016	move.b	#$E,obHeight(a0)
0000a13a 117c000e0017	move.b	#$E,obWidth(a0)
0000a140 217c0000a58a0004	move.l	#Map_Monitor,obMap(a0)
0000a148 317c06800002	move.w	#ArtTile_Monitor,obGfx(a0)
0000a14e 117c00040001	move.b	#4,obRender(a0)
0000a154 117c00030018	move.b	#3,obPriority(a0)
0000a15a 117c000f0019	move.b	#$F,obActWid(a0)
0000a160 45f8fc00	lea	(v_objstate).w,a2
0000a164 7000	moveq	#0,d0
0000a166 10280023	move.b	obRespawnNo(a0),d0
0000a16a 08b200070002	bclr	#7,2(a2,d0.w)
0000a170 083200000002	btst	#0,2(a2,d0.w)
0000a176 670e	beq.s	.notbroken
0000a178 117c00080024	move.b	#8,obRoutine(a0)
0000a17e 117c000b001a	move.b	#$B,obFrame(a0)
0000a184 4e75	rts	
0000a186 117c00460020	move.b	#$46,obColType(a0)
0000a18c 11680028001c	move.b	obSubtype(a0),obAnim(a0)
0000a192 10280025	move.b	ob2ndRout(a0),d0
0000a196 6754	beq.s	.normal
0000a198 5500	subq.b	#2,d0
0000a19a 6630	bne.s	.fall
0000a19c 7200	moveq	#0,d1
0000a19e 12280019	move.b	obActWid(a0),d1
0000a1a2 0641000b	addi.w	#$B,d1
0000a1a6 6100d418	bsr.w	ExitPlatform
0000a1aa 082900030022	btst	#3,obStatus(a1)
0000a1b0 6600000a	bne.w	.ontop
0000a1b4 42280025	clr.b	ob2ndRout(a0)
0000a1b8 600000bc	bra.w	Mon_Animate
0000a1bc 363c0010	move.w	#$10,d3
0000a1c0 34280008	move.w	obX(a0),d2
0000a1c4 6100d95c	bsr.w	MvSonicOnPtfm
0000a1c8 600000ac	bra.w	Mon_Animate
0000a1cc 610033e4	bsr.w	ObjectFall
0000a1d0 4eb900014e18	jsr	(ObjFloorDist).l
0000a1d6 4a41	tst.w	d1
0000a1d8 6a00009c	bpl.w	Mon_Animate
0000a1dc d368000c	add.w	d1,obY(a0)
0000a1e0 42680012	clr.w	obVelY(a0)
0000a1e4 42280025	clr.b	ob2ndRout(a0)
0000a1e8 6000008c	bra.w	Mon_Animate
0000a1ec 323c001a	move.w	#$1A,d1
0000a1f0 343c000f	move.w	#$F,d2
0000a1f4 61000298	bsr.w	Mon_SolidSides
0000a1f8 67000062	beq.w	loc_A25C
0000a1fc 4a690012	tst.w	obVelY(a1)
0000a200 6b08	bmi.s	loc_A20A
0000a202 0c290002001c	cmpi.b	#id_Roll,obAnim(a1)
0000a208 6752	beq.s	loc_A25C
0000a20a 4a41	tst.w	d1
0000a20c 6a12	bpl.s	loc_A220
0000a20e 9769000c	sub.w	d3,obY(a1)
0000a212 6100d29a	bsr.w	loc_74AE
0000a216 117c00020025	move.b	#2,ob2ndRout(a0)
0000a21c 60000058	bra.w	Mon_Animate
0000a220 4a40	tst.w	d0
0000a222 67000022	beq.w	loc_A246
0000a226 6b08	bmi.s	loc_A230
0000a228 4a690010	tst.w	obVelX(a1)
0000a22c 6b18	bmi.s	loc_A246
0000a22e 6006	bra.s	loc_A236
0000a230 4a690010	tst.w	obVelX(a1)
0000a234 6a10	bpl.s	loc_A246
0000a236 91690008	sub.w	d0,obX(a1)
0000a23a 337c00000014	move.w	#0,obInertia(a1)
0000a240 337c00000010	move.w	#0,obVelX(a1)
0000a246 082900010022	btst	#1,obStatus(a1)
0000a24c 661c	bne.s	loc_A26A
0000a24e 08e900050022	bset	#5,obStatus(a1)
0000a254 08e800050022	bset	#5,obStatus(a0)
0000a25a 601a	bra.s	Mon_Animate
0000a25c 082800050022	btst	#5,obStatus(a0)
0000a262 6712	beq.s	Mon_Animate
0000a264 337c0001001c	move.w	#id_Run,obAnim(a1)
0000a26a 08a800050022	bclr	#5,obStatus(a0)
0000a270 08a900050022	bclr	#5,obStatus(a1)
0000a276 43f90000a508	lea	(Ani_Monitor).l,a1
0000a27c 6100049a	bsr.w	AnimateSprite
0000a280 61003382	bsr.w	DisplaySprite
0000a284 30280008	move.w	obX(a0),d0
0000a288 0240ff80	andi.w	#$FF80,d0
0000a28c 3238f700	move.w	(v_screenposx).w,d1
0000a290 04410080	subi.w	#128,d1
0000a294 0241ff80	andi.w	#$FF80,d1
0000a298 9041	sub.w	d1,d0
0000a29a 0c400280	cmpi.w	#128+320+192,d0
0000a29e 620033a0	bhi.w	DeleteObject
0000a2a2 4e75	rts	
0000a2a4 54280024	addq.b	#2,obRoutine(a0)
0000a2a8 117c00000020	move.b	#0,obColType(a0)
0000a2ae 610037dc	bsr.w	FindFreeObj
0000a2b2 6618	bne.s	Mon_Explode
0000a2ba 336800080008	move.w	obX(a0),obX(a1)
0000a2c0 3368000c000c	move.w	obY(a0),obY(a1)
0000a2c6 1368001c001c	move.b	obAnim(a0),obAnim(a1)
0000a2cc 610037be	bsr.w	FindFreeObj
0000a2d0 6616	bne.s	.fail
0000a2d8 54290024	addq.b	#2,obRoutine(a1)
0000a2dc 336800080008	move.w	obX(a0),obX(a1)
0000a2e2 3368000c000c	move.w	obY(a0),obY(a1)
0000a2e8 45f8fc00	lea	(v_objstate).w,a2
0000a2ec 7000	moveq	#0,d0
0000a2ee 10280023	move.b	obRespawnNo(a0),d0
0000a2f2 08f200000002	bset	#0,2(a2,d0.w)
0000a2f8 117c0009001c	move.b	#9,obAnim(a0)
0000a2fe 60003304	bra.w	DisplaySprite
0000a302 7000	moveq	#0,d0
0000a304 10280024	move.b	obRoutine(a0),d0
0000a308 323b000a	move.w	Pow_Index(pc,d0.w),d1
0000a30c 4ebb1006	jsr	Pow_Index(pc,d1.w)
0000a310 600032f2	bra.w	DisplaySprite
0000a31a 54280024	addq.b	#2,obRoutine(a0)
0000a31e 317c06800002	move.w	#ArtTile_Monitor,obGfx(a0)
0000a324 117c00240001	move.b	#$24,obRender(a0)
0000a32a 117c00030018	move.b	#3,obPriority(a0)
0000a330 117c00080019	move.b	#8,obActWid(a0)
0000a336 317cfd000012	move.w	#-$300,obVelY(a0)
0000a33c 7000	moveq	#0,d0
0000a33e 1028001c	move.b	obAnim(a0),d0
0000a342 5400	addq.b	#2,d0
0000a344 1140001a	move.b	d0,obFrame(a0)
0000a348 227c0000a58a	movea.l	#Map_Monitor,a1
0000a34e d000	add.b	d0,d0
0000a350 d2f10000	adda.w	(a1,d0.w),a1
0000a354 5249	addq.w	#1,a1
0000a356 21490004	move.l	a1,obMap(a0)
0000a35a 4a680012	tst.w	obVelY(a0)
0000a35e 6a00000e	bpl.w	Pow_Checks
0000a362 6100327a	bsr.w	SpeedToPos
0000a366 066800180012	addi.w	#$18,obVelY(a0)
0000a36c 4e75	rts	
0000a36e 54280024	addq.b	#2,obRoutine(a0)
0000a372 317c001d001e	move.w	#29,obTimeFrame(a0)
0000a378 1028001c	move.b	obAnim(a0),d0
0000a37c 0c000001	cmpi.b	#1,d0
0000a380 6602	bne.s	Pow_ChkSonic
0000a382 4e75	rts	
0000a384 0c000002	cmpi.b	#2,d0
0000a388 6612	bne.s	Pow_ChkShoes
0000a38a 5238fe12	addq.b	#1,(v_lives).w
0000a38e 5238fe1c	addq.b	#1,(f_lifecount).w
0000a392 303c0088	move.w	#bgm_ExtraLife,d0
0000a396 4ef900001396	jmp	(QueueSound1).l
0000a39c 0c000003	cmpi.b	#3,d0
0000a3a0 6628	bne.s	Pow_ChkShield
0000a3a2 11fc0001fe2e	move.b	#1,(v_shoes).w
0000a3a8 31fc04b0d034	move.w	#$4B0,(v_player+shoetime).w
0000a3ae 31fc0c00f760	move.w	#$C00,(v_sonspeedmax).w
0000a3b4 31fc0018f762	move.w	#$18,(v_sonspeedacc).w
0000a3ba 31fc0080f764	move.w	#$80,(v_sonspeeddec).w
0000a3c0 303c00e2	move.w	#bgm_Speedup,d0
0000a3c4 4ef900001396	jmp	(QueueSound1).l
0000a3ca 0c000004	cmpi.b	#4,d0
0000a3ce 6616	bne.s	Pow_ChkInvinc
0000a3d0 11fc0001fe2c	move.b	#1,(v_shield).w
0000a3d6 11fc0038d180	move.b	#id_ShieldItem,(v_shieldobj).w
0000a3dc 303c00af	move.w	#sfx_Shield,d0
0000a3e0 4ef900001396	jmp	(QueueSound1).l
0000a3e6 0c000005	cmpi.b	#5,d0
0000a3ea 664e	bne.s	Pow_ChkRings
0000a3ec 11fc0001fe2d	move.b	#1,(v_invinc).w
0000a3f2 31fc04b0d032	move.w	#$4B0,(v_player+invtime).w
0000a3f8 11fc0038d200	move.b	#id_ShieldItem,(v_starsobj1).w
0000a3fe 11fc0001d21c	move.b	#1,(v_starsobj1+obAnim).w
0000a404 11fc0038d240	move.b	#id_ShieldItem,(v_starsobj2).w
0000a40a 11fc0002d25c	move.b	#2,(v_starsobj2+obAnim).w
0000a410 11fc0038d280	move.b	#id_ShieldItem,(v_starsobj3).w
0000a416 11fc0003d29c	move.b	#3,(v_starsobj3+obAnim).w
0000a41c 11fc0038d2c0	move.b	#id_ShieldItem,(v_starsobj4).w
0000a422 11fc0004d2dc	move.b	#4,(v_starsobj4+obAnim).w
0000a428 4a38f7aa	tst.b	(f_lockscreen).w
0000a42c 660a	bne.s	Pow_NoMusic
0000a42e 303c0087	move.w	#bgm_Invincible,d0
0000a432 4ef900001396	jmp	(QueueSound1).l
0000a438 4e75	rts	
0000a43a 0c000006	cmpi.b	#6,d0
0000a43e 663a	bne.s	Pow_ChkS
0000a440 0678000afe20	addi.w	#10,(v_rings).w
0000a446 00380001fe1d	ori.b	#1,(f_ringcount).w
0000a44c 0c780064fe20	cmpi.w	#100,(v_rings).w
0000a452 651c	blo.s	Pow_RingSound
0000a454 08f80001fe1b	bset	#1,(v_lifecount).w
0000a45a 6700ff2e	beq.w	ExtraLife
0000a45e 0c7800c8fe20	cmpi.w	#200,(v_rings).w
0000a464 650a	blo.s	Pow_RingSound
0000a466 08f80002fe1b	bset	#2,(v_lifecount).w
0000a46c 6700ff1c	beq.w	ExtraLife
0000a470 303c00b5	move.w	#sfx_Ring,d0
0000a474 4ef900001396	jmp	(QueueSound1).l
0000a47a 0c000007	cmpi.b	#7,d0
0000a47e 6602	bne.s	Pow_ChkGoggles
0000a480 4e71	nop	
0000a482 4e75	rts	
0000a484 5368001e	subq.w	#1,obTimeFrame(a0)
0000a488 6b0031b6	bmi.w	DeleteObject
0000a48c 4e75	rts	
0000a48e 43f8d000	lea	(v_player).w,a1
0000a492 30290008	move.w	obX(a1),d0
0000a496 90680008	sub.w	obX(a0),d0
0000a49a d041	add.w	d1,d0
0000a49c 6b48	bmi.s	loc_A4E6
0000a49e 3601	move.w	d1,d3
0000a4a0 d643	add.w	d3,d3
0000a4a2 b043	cmp.w	d3,d0
0000a4a4 6240	bhi.s	loc_A4E6
0000a4a6 16290016	move.b	obHeight(a1),d3
0000a4aa 4883	ext.w	d3
0000a4ac d443	add.w	d3,d2
0000a4ae 3629000c	move.w	obY(a1),d3
0000a4b2 9668000c	sub.w	obY(a0),d3
0000a4b6 d642	add.w	d2,d3
0000a4b8 6b2c	bmi.s	loc_A4E6
0000a4ba d442	add.w	d2,d2
0000a4bc b642	cmp.w	d2,d3
0000a4be 6426	bhs.s	loc_A4E6
0000a4c0 4a38f7c8	tst.b	(f_playerctrl).w
0000a4c4 6b20	bmi.s	loc_A4E6
0000a4c6 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
0000a4cc 6418	bhs.s	loc_A4E6
0000a4ce 4a78fe08	tst.w	(v_debuguse).w
0000a4d2 6612	bne.s	loc_A4E6
0000a4d4 b240	cmp.w	d0,d1
0000a4d6 6404	bhs.s	loc_A4DC
0000a4d8 d241	add.w	d1,d1
0000a4da 9041	sub.w	d1,d0
0000a4dc 0c430010	cmpi.w	#$10,d3
0000a4e0 6508	blo.s	loc_A4EA
0000a4e2 7201	moveq	#1,d1
0000a4e4 4e75	rts	
0000a4e6 7200	moveq	#0,d1
0000a4e8 4e75	rts	
0000a4ea 7200	moveq	#0,d1
0000a4ec 12280019	move.b	obActWid(a0),d1
0000a4f0 5841	addq.w	#4,d1
0000a4f2 3401	move.w	d1,d2
0000a4f4 d442	add.w	d2,d2
0000a4f6 d2690008	add.w	obX(a1),d1
0000a4fa 92680008	sub.w	obX(a0),d1
0000a4fe 6be2	bmi.s	loc_A4E2
0000a500 b242	cmp.w	d2,d1
0000a502 64de	bhs.s	loc_A4E2
0000a504 72ff	moveq	#-1,d1
0000a506 4e75	rts	
0000a61c 7000	moveq	#0,d0
0000a61e 10280024	move.b	obRoutine(a0),d0
0000a622 323b0006	move.w	TSon_Index(pc,d0.w),d1
0000a626 4efb1002	jmp	TSon_Index(pc,d1.w)
0000a632 54280024	addq.b	#2,obRoutine(a0)
0000a636 317c00f00008	move.w	#$F0,obX(a0)
0000a63c 317c00de000a	move.w	#$DE,obScreenY(a0)
0000a642 217c0000a8880004	move.l	#Map_TSon,obMap(a0)
0000a64a 317c23000002	move.w	#ArtTile_Title_Sonic|Tile_Pal2,obGfx(a0)
0000a650 117c00010018	move.b	#1,obPriority(a0)
0000a656 117c001d001f	move.b	#29,obDelayAni(a0)
0000a65c 43f90000a704	lea	(Ani_TSon).l,a1
0000a662 610000b4	bsr.w	AnimateSprite
0000a666 5328001f	subq.b	#1,obDelayAni(a0)
0000a66a 6a08	bpl.s	.wait
0000a66c 54280024	addq.b	#2,obRoutine(a0)
0000a670 60002f92	bra.w	DisplaySprite
0000a674 4e75	rts	
0000a676 5168000a	subq.w	#8,obScreenY(a0)
0000a67a 0c680096000a	cmpi.w	#$96,obScreenY(a0)
0000a680 6604	bne.s	.display
0000a682 54280024	addq.b	#2,obRoutine(a0)
0000a686 60002f7c	bra.w	DisplaySprite
0000a68a 4e75	rts	
0000a68c 43f90000a704	lea	(Ani_TSon).l,a1
0000a692 61000084	bsr.w	AnimateSprite
0000a696 60002f6c	bra.w	DisplaySprite
0000a69a 4e75	rts	
0000a69c 7000	moveq	#0,d0
0000a69e 10280024	move.b	obRoutine(a0),d0
0000a6a2 323b000a	move.w	PSB_Index(pc,d0.w),d1
0000a6a6 4ebb1006	jsr	PSB_Index(pc,d1.w)
0000a6aa 60002f58	bra.w	DisplaySprite
0000a6b4 54280024	addq.b	#2,obRoutine(a0)
0000a6b8 317c00d00008	move.w	#$D0,obX(a0)
0000a6be 317c0130000a	move.w	#$130,obScreenY(a0)
0000a6c4 217c0000a7c40004	move.l	#Map_PSB,obMap(a0)
0000a6cc 317c02000002	move.w	#ArtTile_Title_Foreground,obGfx(a0)
0000a6d2 0c280002001a	cmpi.b	#2,obFrame(a0)
0000a6d8 6520	blo.s	PSB_PrsStart
0000a6da 54280024	addq.b	#2,obRoutine(a0)
0000a6de 0c280003001a	cmpi.b	#3,obFrame(a0)
0000a6e4 6612	bne.s	PSB_Exit
0000a6e6 317c25100002	move.w	#ArtTile_Title_Trademark|Tile_Pal2,obGfx(a0)
0000a6ec 317c01700008	move.w	#$170,obX(a0)
0000a6f2 317c00f8000a	move.w	#$F8,obScreenY(a0)
0000a6f8 4e75	rts	
0000a6fa 43f90000a712	lea	(Ani_PSBTM).l,a1
0000a700 60000016	bra.w	AnimateSprite
0000a718 7000	moveq	#0,d0
0000a71a 1028001c	move.b	obAnim(a0),d0
0000a71e b028001d	cmp.b	obPrevAni(a0),d0
0000a722 6710	beq.s	Anim_Run
0000a724 1140001d	move.b	d0,obPrevAni(a0)
0000a728 117c0000001b	move.b	#0,obAniFrame(a0)
0000a72e 117c0000001e	move.b	#0,obTimeFrame(a0)
0000a734 5328001e	subq.b	#1,obTimeFrame(a0)
0000a738 6a3a	bpl.s	Anim_Wait
0000a73a d040	add.w	d0,d0
0000a73c d2f10000	adda.w	(a1,d0.w),a1
0000a740 1151001e	move.b	(a1),obTimeFrame(a0)
0000a744 7200	moveq	#0,d1
0000a746 1228001b	move.b	obAniFrame(a0),d1
0000a74a 10311001	move.b	1(a1,d1.w),d0
0000a74e 6b26	bmi.s	Anim_End_FF
0000a750 1200	move.b	d0,d1
0000a752 0200001f	andi.b	#$1F,d0
0000a756 1140001a	move.b	d0,obFrame(a0)
0000a75a 10280022	move.b	obStatus(a0),d0
0000a75e e719	rol.b	#3,d1
0000a760 b101	eor.b	d0,d1
0000a762 02010003	andi.b	#3,d1
0000a766 022800fc0001	andi.b	#$FC,obRender(a0)
0000a76c 83280001	or.b	d1,obRender(a0)
0000a770 5228001b	addq.b	#1,obAniFrame(a0)
0000a774 4e75	rts	
0000a776 5200	addq.b	#1,d0
0000a778 660c	bne.s	Anim_End_FE
0000a77a 117c0000001b	move.b	#0,obAniFrame(a0)
0000a780 10290001	move.b	1(a1),d0
0000a784 60ca	bra.s	Anim_Next
0000a786 5200	addq.b	#1,d0
0000a788 6610	bne.s	Anim_End_FD
0000a78a 10311002	move.b	2(a1,d1.w),d0
0000a78e 9128001b	sub.b	d0,obAniFrame(a0)
0000a792 9200	sub.b	d0,d1
0000a794 10311001	move.b	1(a1,d1.w),d0
0000a798 60b6	bra.s	Anim_Next
0000a79a 5200	addq.b	#1,d0
0000a79c 6606	bne.s	Anim_End_FC
0000a79e 11711002001c	move.b	2(a1,d1.w),obAnim(a0)
0000a7a4 5200	addq.b	#1,d0
0000a7a6 6604	bne.s	Anim_End_FB
0000a7a8 54280024	addq.b	#2,obRoutine(a0)
0000a7ac 5200	addq.b	#1,d0
0000a7ae 660a	bne.s	Anim_End_FA
0000a7b0 117c0000001b	move.b	#0,obAniFrame(a0)
0000a7b6 42280025	clr.b	ob2ndRout(a0)
0000a7ba 5200	addq.b	#1,d0
0000a7bc 6604	bne.s	Anim_End
0000a7be 54280025	addq.b	#2,ob2ndRout(a0)
0000a7c2 4e75	rts	
0000ab20 7000	moveq	#0,d0
0000ab22 10280024	move.b	obRoutine(a0),d0
0000ab26 323b000a	move.w	Chop_Index(pc,d0.w),d1
0000ab2a 4ebb1006	jsr	Chop_Index(pc,d1.w)
0000ab2e 60004b7c	bra.w	RememberState
0000ab36 54280024	addq.b	#2,obRoutine(a0)
0000ab3a 217c0000abca0004	move.l	#Map_Chop,obMap(a0)
0000ab42 317c047b0002	move.w	#ArtTile_Chopper,obGfx(a0)
0000ab48 117c00040001	move.b	#4,obRender(a0)
0000ab4e 117c00040018	move.b	#4,obPriority(a0)
0000ab54 117c00090020	move.b	#9,obColType(a0)
0000ab5a 117c00100019	move.b	#$10,obActWid(a0)
0000ab60 317cf9000012	move.w	#-$700,obVelY(a0)
0000ab66 3168000c0030	move.w	obY(a0),chop_origY(a0)
0000ab6c 43f90000abb8	lea	(Ani_Chop).l,a1
0000ab72 6100fba4	bsr.w	AnimateSprite
0000ab76 61002a66	bsr.w	SpeedToPos
0000ab7a 066800180012	addi.w	#$18,obVelY(a0)
0000ab80 30280030	move.w	chop_origY(a0),d0
0000ab84 b068000c	cmp.w	obY(a0),d0
0000ab88 640a	bhs.s	.chganimation
0000ab8a 3140000c	move.w	d0,obY(a0)
0000ab8e 317cf9000012	move.w	#-$700,obVelY(a0)
0000ab94 117c0001001c	move.b	#1,obAnim(a0)
0000ab9a 044000c0	subi.w	#$C0,d0
0000ab9e b068000c	cmp.w	obY(a0),d0
0000aba2 6412	bhs.s	.nochg
0000aba4 117c0000001c	move.b	#0,obAnim(a0)
0000abaa 4a680012	tst.w	obVelY(a0)
0000abae 6b06	bmi.s	.nochg
0000abb0 117c0002001c	move.b	#2,obAnim(a0)
0000abb6 4e75	rts	
0000abda 7000	moveq	#0,d0
0000abdc 10280024	move.b	obRoutine(a0),d0
0000abe0 323b0006	move.w	Jaws_Index(pc,d0.w),d1
0000abe4 4efb1002	jmp	Jaws_Index(pc,d1.w)
0000abec 54280024	addq.b	#2,obRoutine(a0)
0000abf0 217c0000ac700004	move.l	#Map_Jaws,obMap(a0)
0000abf8 317c24860002	move.w	#ArtTile_Jaws|Tile_Pal2,obGfx(a0)
0000abfe 002800040001	ori.b	#4,obRender(a0)
0000ac04 117c000a0020	move.b	#$A,obColType(a0)
0000ac0a 117c00040018	move.b	#4,obPriority(a0)
0000ac10 117c00100019	move.b	#$10,obActWid(a0)
0000ac16 7000	moveq	#0,d0
0000ac18 10280028	move.b	obSubtype(a0),d0
0000ac1c ed48	lsl.w	#6,d0
0000ac1e 5340	subq.w	#1,d0
0000ac20 31400030	move.w	d0,jaws_timecount(a0)
0000ac24 31400032	move.w	d0,jaws_timedelay(a0)
0000ac28 317cffc00010	move.w	#-$40,obVelX(a0)
0000ac2e 082800000022	btst	#0,obStatus(a0)
0000ac34 6704	beq.s	Jaws_Turn
0000ac36 44680010	neg.w	obVelX(a0)
0000ac3a 53680030	subq.w	#1,jaws_timecount(a0)
0000ac3e 6a16	bpl.s	.animate
0000ac40 316800320030	move.w	jaws_timedelay(a0),jaws_timecount(a0)
0000ac46 44680010	neg.w	obVelX(a0)
0000ac4a 086800000022	bchg	#0,obStatus(a0)
0000ac50 117c0001001d	move.b	#1,obPrevAni(a0)
0000ac56 43f90000ac68	lea	(Ani_Jaws).l,a1
0000ac5c 6100faba	bsr.w	AnimateSprite
0000ac60 6100297c	bsr.w	SpeedToPos
0000ac64 60004a46	bra.w	RememberState
0000aca4 7000	moveq	#0,d0
0000aca6 10280024	move.b	obRoutine(a0),d0
0000acaa 323b0006	move.w	Burro_Index(pc,d0.w),d1
0000acae 4efb1002	jmp	Burro_Index(pc,d1.w)
0000acb6 54280024	addq.b	#2,obRoutine(a0)
0000acba 117c00130016	move.b	#$13,obHeight(a0)
0000acc0 117c00080017	move.b	#8,obWidth(a0)
0000acc6 217c0000ae5c0004	move.l	#Map_Burro,obMap(a0)
0000acce 317c04a60002	move.w	#ArtTile_Burrobot,obGfx(a0)
0000acd4 002800040001	ori.b	#4,obRender(a0)
0000acda 117c00040018	move.b	#4,obPriority(a0)
0000ace0 117c00050020	move.b	#5,obColType(a0)
0000ace6 117c000c0019	move.b	#$C,obActWid(a0)
0000acec 5c280025	addq.b	#6,ob2ndRout(a0)
0000acf0 117c0002001c	move.b	#2,obAnim(a0)
0000acf6 7000	moveq	#0,d0
0000acf8 10280025	move.b	ob2ndRout(a0),d0
0000acfc 323b0014	move.w	.index(pc,d0.w),d1
0000ad00 4ebb1010	jsr	.index(pc,d1.w)
0000ad04 43f90000ae44	lea	(Ani_Burro).l,a1
0000ad0a 6100fa0c	bsr.w	AnimateSprite
0000ad0e 6000499c	bra.w	RememberState
0000ad1a 53680030	subq.w	#1,burro_timedelay(a0)
0000ad1e 6a22	bpl.s	.nochg
0000ad20 54280025	addq.b	#2,ob2ndRout(a0)
0000ad24 317c00ff0030	move.w	#255,burro_timedelay(a0)
0000ad2a 317c00800010	move.w	#$80,obVelX(a0)
0000ad30 117c0001001c	move.b	#1,obAnim(a0)
0000ad36 086800000022	bchg	#0,obStatus(a0)
0000ad3c 6704	beq.s	.nochg
0000ad3e 44680010	neg.w	obVelX(a0)
0000ad42 4e75	rts	
0000ad44 53680030	subq.w	#1,burro_timedelay(a0)
0000ad48 6b3a	bmi.s	loc_AD84
0000ad4a 61002892	bsr.w	SpeedToPos
0000ad4e 086800000032	bchg	#0,objoff_32(a0)
0000ad54 6622	bne.s	loc_AD78
0000ad56 36280008	move.w	obX(a0),d3
0000ad5a 0643000c	addi.w	#$C,d3
0000ad5e 082800000022	btst	#0,obStatus(a0)
0000ad64 6604	bne.s	loc_AD6A
0000ad66 04430018	subi.w	#$18,d3
0000ad6a 4eb900014e1c	jsr	(ObjFloorDist2).l
0000ad70 0c41000c	cmpi.w	#$C,d1
0000ad74 6c0e	bge.s	loc_AD84
0000ad76 4e75	rts	
0000ad78 4eb900014e18	jsr	(ObjFloorDist).l
0000ad7e d368000c	add.w	d1,obY(a0)
0000ad82 4e75	rts	
0000ad84 08380002fe0f	btst	#2,(v_vblank_byte).w
0000ad8a 6718	beq.s	loc_ADA4
0000ad8c 55280025	subq.b	#2,ob2ndRout(a0)
0000ad90 317c003b0030	move.w	#59,burro_timedelay(a0)
0000ad96 317c00000010	move.w	#0,obVelX(a0)
0000ad9c 117c0000001c	move.b	#0,obAnim(a0)
0000ada2 4e75	rts	
0000ada4 54280025	addq.b	#2,ob2ndRout(a0)
0000ada8 317cfc000012	move.w	#-$400,obVelY(a0)
0000adae 117c0002001c	move.b	#2,obAnim(a0)
0000adb4 4e75	rts	
0000adb6 61002826	bsr.w	SpeedToPos
0000adba 066800180012	addi.w	#$18,obVelY(a0)
0000adc0 6b2e	bmi.s	locret_ADF0
0000adc2 117c0003001c	move.b	#3,obAnim(a0)
0000adc8 4eb900014e18	jsr	(ObjFloorDist).l
0000adce 4a41	tst.w	d1
0000add0 6a1e	bpl.s	locret_ADF0
0000add2 d368000c	add.w	d1,obY(a0)
0000add6 317c00000012	move.w	#0,obVelY(a0)
0000addc 117c0001001c	move.b	#1,obAnim(a0)
0000ade2 317c00ff0030	move.w	#255,burro_timedelay(a0)
0000ade8 55280025	subq.b	#2,ob2ndRout(a0)
0000adec 61000034	bsr.w	Burro_ChkSonic2
0000adf0 4e75	rts	
0000adf2 343c0060	move.w	#$60,d2
0000adf6 6100002a	bsr.w	Burro_ChkSonic2
0000adfa 6424	bcc.s	locret_AE20
0000adfc 3038d00c	move.w	(v_player+obY).w,d0
0000ae00 9068000c	sub.w	obY(a0),d0
0000ae04 641a	bcc.s	locret_AE20
0000ae06 0c40ff80	cmpi.w	#-$80,d0
0000ae0a 6514	blo.s	locret_AE20
0000ae0c 4a78fe08	tst.w	(v_debuguse).w
0000ae10 660e	bne.s	locret_AE20
0000ae12 55280025	subq.b	#2,ob2ndRout(a0)
0000ae16 31410010	move.w	d1,obVelX(a0)
0000ae1a 317cfc000012	move.w	#-$400,obVelY(a0)
0000ae20 4e75	rts	
0000ae22 323c0080	move.w	#$80,d1
0000ae26 08e800000022	bset	#0,obStatus(a0)
0000ae2c 3038d008	move.w	(v_player+obX).w,d0
0000ae30 90680008	sub.w	obX(a0),d0
0000ae34 640a	bcc.s	loc_AE40
0000ae36 4440	neg.w	d0
0000ae38 4441	neg.w	d1
0000ae3a 08a800000022	bclr	#0,obStatus(a0)
0000ae40 b042	cmp.w	d2,d0
0000ae42 4e75	rts	
0000aeb8 7000	moveq	#0,d0
0000aeba 10280024	move.b	obRoutine(a0),d0
0000aebe 323b0006	move.w	LGrass_Index(pc,d0.w),d1
0000aec2 4efb1002	jmp	LGrass_Index(pc,d1.w)
0000aed6 54280024	addq.b	#2,obRoutine(a0)
0000aeda 217c0000b2d40004	move.l	#Map_LGrass,obMap(a0)
0000aee2 317cc0000002	move.w	#ArtTile_Level|Tile_Pal3|Tile_Prio,obGfx(a0)
0000aee8 117c00040001	move.b	#4,obRender(a0)
0000aeee 117c00050018	move.b	#5,obPriority(a0)
0000aef4 3168000c002c	move.w	obY(a0),lgrass_origY(a0)
0000aefa 31680008002a	move.w	obX(a0),lgrass_origX(a0)
0000af00 7000	moveq	#0,d0
0000af02 10280028	move.b	obSubtype(a0),d0
0000af06 e448	lsr.w	#2,d0
0000af08 0240001c	andi.w	#$1C,d0
0000af0c 43fb00bc	lea	LGrass_Data(pc,d0.w),a1
0000af10 3019	move.w	(a1)+,d0
0000af12 45fb00b6	lea	LGrass_Data(pc,d0.w),a2
0000af16 214a0030	move.l	a2,objoff_30(a0)
0000af1a 1159001a	move.b	(a1)+,obFrame(a0)
0000af1e 11510019	move.b	(a1),obActWid(a0)
0000af22 0228000f0028	andi.b	#$F,obSubtype(a0)
0000af28 117c00400016	move.b	#$40,obHeight(a0)
0000af2e 08e800040001	bset	#4,obRender(a0)
0000af34 61000068	bsr.w	LGrass_Types
0000af38 4a280025	tst.b	obSolid(a0)
0000af3c 6736	beq.s	LGrass_Solid
0000af3e 7200	moveq	#0,d1
0000af40 12280019	move.b	obActWid(a0),d1
0000af44 0641000b	addi.w	#$B,d1
0000af48 6100c676	bsr.w	ExitPlatform
0000af4c 082900030022	btst	#3,obStatus(a1)
0000af52 66000008	bne.w	LGrass_Slope
0000af56 42280025	clr.b	obSolid(a0)
0000af5a 603a	bra.s	LGrass_Display
0000af5c 7200	moveq	#0,d1
0000af5e 12280019	move.b	obActWid(a0),d1
0000af62 0641000b	addi.w	#$B,d1
0000af66 24680030	movea.l	objoff_30(a0),a2
0000af6a 34280008	move.w	obX(a0),d2
0000af6e 6100d5ba	bsr.w	SlopeObject2
0000af72 6022	bra.s	LGrass_Display
0000af74 7200	moveq	#0,d1
0000af76 12280019	move.b	obActWid(a0),d1
0000af7a 0641000b	addi.w	#$B,d1
0000af7e 343c0020	move.w	#$20,d2
0000af82 0c280002001a	cmpi.b	#2,obFrame(a0)
0000af88 6604	bne.s	loc_AF8E
0000af8a 343c0030	move.w	#$30,d2
0000af8e 24680030	movea.l	objoff_30(a0),a2
0000af92 61004ace	bsr.w	SolidObject2F
0000af96 6100266c	bsr.w	DisplaySprite
0000af9a 6000011e	bra.w	LGrass_ChkDel
0000af9e 7000	moveq	#0,d0
0000afa0 10280028	move.b	obSubtype(a0),d0
0000afa4 02400007	andi.w	#7,d0
0000afa8 d040	add.w	d0,d0
0000afaa 323b0006	move.w	LGrass_TypeIndex(pc,d0.w),d1
0000afae 4efb1002	jmp	LGrass_TypeIndex(pc,d1.w)
0000afbe 4e75	rts	
0000afc0 1038fe60	move.b	(v_oscillate+2).w,d0
0000afc4 323c0020	move.w	#$20,d1
0000afc8 601c	bra.s	LGrass_Move
0000afca 1038fe64	move.b	(v_oscillate+6).w,d0
0000afce 323c0030	move.w	#$30,d1
0000afd2 6012	bra.s	LGrass_Move
0000afd4 1038fe68	move.b	(v_oscillate+$A).w,d0
0000afd8 323c0040	move.w	#$40,d1
0000afdc 6008	bra.s	LGrass_Move
0000afde 1038fe6c	move.b	(v_oscillate+$E).w,d0
0000afe2 323c0060	move.w	#$60,d1
0000afe6 082800030028	btst	#3,obSubtype(a0)
0000afec 6704	beq.s	loc_AFF2
0000afee 4440	neg.w	d0
0000aff0 d041	add.w	d1,d0
0000aff2 3228002c	move.w	lgrass_origY(a0),d1
0000aff6 9240	sub.w	d0,d1
0000aff8 3141000c	move.w	d1,obY(a0)
0000affc 4e75	rts	
0000affe 10280034	move.b	objoff_34(a0),d0
0000b002 4a280025	tst.b	obSolid(a0)
0000b006 6608	bne.s	loc_B010
0000b008 5500	subq.b	#2,d0
0000b00a 6410	bcc.s	loc_B01C
0000b00c 7000	moveq	#0,d0
0000b00e 600c	bra.s	loc_B01C
0000b010 5800	addq.b	#4,d0
0000b012 0c000040	cmpi.b	#$40,d0
0000b016 6504	blo.s	loc_B01C
0000b018 103c0040	move.b	#$40,d0
0000b01c 11400034	move.b	d0,objoff_34(a0)
0000b020 4eb9000029da	jsr	(CalcSine).l
0000b026 e848	lsr.w	#4,d0
0000b028 3200	move.w	d0,d1
0000b02a d068002c	add.w	lgrass_origY(a0),d0
0000b02e 3140000c	move.w	d0,obY(a0)
0000b032 0c2800200034	cmpi.b	#$20,objoff_34(a0)
0000b038 6640	bne.s	loc_B07A
0000b03a 4a280035	tst.b	objoff_35(a0)
0000b03e 663a	bne.s	loc_B07A
0000b040 117c00010035	move.b	#1,objoff_35(a0)
0000b046 61002a5a	bsr.w	FindNextFreeObj
0000b04a 662e	bne.s	loc_B07A
0000b052 336800080008	move.w	obX(a0),obX(a1)
0000b058 3368002c002c	move.w	lgrass_origY(a0),lgrass_origY(a1)
0000b05e 5069002c	addq.w	#8,lgrass_origY(a1)
0000b062 5769002c	subq.w	#3,lgrass_origY(a1)
0000b066 046900400008	subi.w	#$40,obX(a1)
0000b06c 236800300030	move.l	objoff_30(a0),objoff_30(a1)
0000b072 23480038	move.l	a0,objoff_38(a1)
0000b076 2448	movea.l	a0,a2
0000b078 6122	bsr.s	sub_B09C
0000b07a 7400	moveq	#0,d2
0000b07c 45e80036	lea	objoff_36(a0),a2
0000b080 141a	move.b	(a2)+,d2
0000b082 5302	subq.b	#1,d2
0000b084 6514	bcs.s	locret_B09A
0000b086 7000	moveq	#0,d0
0000b088 101a	move.b	(a2)+,d0
0000b08a ed48	lsl.w	#object_size_bits,d0
0000b08c 0640d000	addi.w	#v_objspace&$FFFF,d0
0000b090 3240	movea.w	d0,a1
0000b092 3341003c	move.w	d1,objoff_3C(a1)
0000b096 51caffee	dbf	d2,loc_B086
0000b09a 4e75	rts	
0000b09c 45ea0036	lea	objoff_36(a2),a2
0000b0a0 7000	moveq	#0,d0
0000b0a2 1012	move.b	(a2),d0
0000b0a4 5212	addq.b	#1,(a2)
0000b0a6 45f20001	lea	1(a2,d0.w),a2
0000b0aa 3009	move.w	a1,d0
0000b0ac 0440d000	subi.w	#v_objspace&$FFFF,d0
0000b0b0 ec48	lsr.w	#object_size_bits,d0
0000b0b2 0240007f	andi.w	#$7F,d0
0000b0b6 1480	move.b	d0,(a2)
0000b0b8 4e75	rts	
0000b0ba 4a280035	tst.b	objoff_35(a0)
0000b0be 6706	beq.s	loc_B0C6
0000b0c0 4a280001	tst.b	obRender(a0)
0000b0c4 6a20	bpl.s	LGrass_DelFlames
0000b0c6 3028002a	move.w	lgrass_origX(a0),d0
0000b0ca 0240ff80	andi.w	#$FF80,d0
0000b0ce 3238f700	move.w	(v_screenposx).w,d1
0000b0d2 04410080	subi.w	#128,d1
0000b0d6 0241ff80	andi.w	#$FF80,d1
0000b0da 9041	sub.w	d1,d0
0000b0dc 0c400280	cmpi.w	#128+320+192,d0
0000b0e0 6200255e	bhi.w	DeleteObject
0000b0e4 4e75	rts	
0000b0e6 7400	moveq	#0,d2
0000b0e8 45e80036	lea	objoff_36(a0),a2
0000b0ec 1412	move.b	(a2),d2
0000b0ee 421a	clr.b	(a2)+
0000b0f0 5302	subq.b	#1,d2
0000b0f2 6522	bcs.s	locret_B116
0000b0f4 7000	moveq	#0,d0
0000b0f6 1012	move.b	(a2),d0
0000b0f8 421a	clr.b	(a2)+
0000b0fa ed48	lsl.w	#object_size_bits,d0
0000b0fc 0640d000	addi.w	#v_objspace&$FFFF,d0
0000b100 3240	movea.w	d0,a1
0000b102 6100253e	bsr.w	DeleteChild
0000b106 51caffec	dbf	d2,loc_B0F4
0000b10a 117c00000035	move.b	#0,objoff_35(a0)
0000b110 117c00000034	move.b	#0,objoff_34(a0)
0000b116 4e75	rts	
0000b1dc 7000	moveq	#0,d0
0000b1de 10280024	move.b	obRoutine(a0),d0
0000b1e2 323b0006	move.w	GFire_Index(pc,d0.w),d1
0000b1e6 4efb1002	jmp	GFire_Index(pc,d1.w)
0000b1f0 54280024	addq.b	#2,obRoutine(a0)
0000b1f4 217c0000b36e0004	move.l	#Map_Fire,obMap(a0)
0000b1fc 317c03450002	move.w	#ArtTile_MZ_Fireball,obGfx(a0)
0000b202 31680008002a	move.w	obX(a0),gfire_origX(a0)
0000b208 117c00040001	move.b	#4,obRender(a0)
0000b20e 117c00010018	move.b	#1,obPriority(a0)
0000b214 117c008b0020	move.b	#$8B,obColType(a0)
0000b21a 117c00080019	move.b	#8,obActWid(a0)
0000b220 303c00c8	move.w	#sfx_Burning,d0
0000b224 4eb90000139c	jsr	(QueueSound2).l
0000b22a 4a280028	tst.b	obSubtype(a0)
0000b22e 6708	beq.s	GFire_Spread
0000b230 54280024	addq.b	#2,obRoutine(a0)
0000b234 6000007c	bra.w	GFire_Move
0000b238 22680030	movea.l	objoff_30(a0),a1
0000b23c 32280008	move.w	obX(a0),d1
0000b240 9268002a	sub.w	gfire_origX(a0),d1
0000b244 0641000c	addi.w	#$C,d1
0000b248 3001	move.w	d1,d0
0000b24a e248	lsr.w	#1,d0
0000b24c 10310000	move.b	(a1,d0.w),d0
0000b250 4440	neg.w	d0
0000b252 d068002c	add.w	objoff_2C(a0),d0
0000b256 3400	move.w	d0,d2
0000b258 d068003c	add.w	objoff_3C(a0),d0
0000b25c 3140000c	move.w	d0,obY(a0)
0000b260 0c410084	cmpi.w	#$84,d1
0000b264 644a	bhs.s	loc_B2B0
0000b266 06a8000100000008	addi.l	#$10000,obX(a0)
0000b26e 0c410080	cmpi.w	#$80,d1
0000b272 643c	bhs.s	loc_B2B0
0000b274 20280008	move.l	obX(a0),d0
0000b278 068000080000	addi.l	#$80000,d0
0000b27e 0280000fffff	andi.l	#$FFFFF,d0
0000b284 662a	bne.s	loc_B2B0
0000b286 6100281a	bsr.w	FindNextFreeObj
0000b28a 6624	bne.s	loc_B2B0
0000b292 336800080008	move.w	obX(a0),obX(a1)
0000b298 3342002c	move.w	d2,objoff_2C(a1)
0000b29c 3368003c003c	move.w	objoff_3C(a0),objoff_3C(a1)
0000b2a2 137c00010028	move.b	#1,obSubtype(a1)
0000b2a8 24680038	movea.l	objoff_38(a0),a2
0000b2ac 6100fdee	bsr.w	sub_B09C
0000b2b0 600c	bra.s	GFire_Animate
0000b2b2 3028002c	move.w	objoff_2C(a0),d0
0000b2b6 d068003c	add.w	objoff_3C(a0),d0
0000b2ba 3140000c	move.w	d0,obY(a0)
0000b2be 43f90000b2cc	lea	(Ani_GFire).l,a1
0000b2c4 6100f452	bsr.w	AnimateSprite
0000b2c8 6000233a	bra.w	DisplaySprite
0000b39e 7000	moveq	#0,d0
0000b3a0 10280024	move.b	obRoutine(a0),d0
0000b3a4 323b002c	move.w	Glass_Index(pc,d0.w),d1
0000b3a8 4ebb1028	jsr	Glass_Index(pc,d1.w)
0000b3ac 30280008	move.w	obX(a0),d0
0000b3b0 0240ff80	andi.w	#$FF80,d0
0000b3b4 3238f700	move.w	(v_screenposx).w,d1
0000b3b8 04410080	subi.w	#128,d1
0000b3bc 0241ff80	andi.w	#$FF80,d1
0000b3c0 9041	sub.w	d1,d0
0000b3c2 0c400280	cmpi.w	#128+320+192,d0
0000b3c6 62000006	bhi.w	Glass_Delete
0000b3ca 60002238	bra.w	DisplaySprite
0000b3ce 60002270	bra.w	DeleteObject
0000b3e8 45f90000b3dc	lea	(Glass_Vars1).l,a2
0000b3ee 7201	moveq	#1,d1
0000b3f0 117c00480016	move.b	#$48,obHeight(a0)
0000b3f6 0c2800030028	cmpi.b	#3,obSubtype(a0)
0000b3fc 650e	blo.s	.IsType012
0000b3fe 45f90000b3e2	lea	(Glass_Vars2).l,a2
0000b404 7201	moveq	#1,d1
0000b406 117c00380016	move.b	#$38,obHeight(a0)
0000b40c 2248	movea.l	a0,a1
0000b40e 6006	bra.s	.Load
0000b410 61002690	bsr.w	FindNextFreeObj
0000b414 666a	bne.s	.Fail
0000b416 135a0024	move.b	(a2)+,obRoutine(a1)
0000b420 336800080008	move.w	obX(a0),obX(a1)
0000b426 101a	move.b	(a2)+,d0
0000b428 4880	ext.w	d0
0000b42a d068000c	add.w	obY(a0),d0
0000b42e 3340000c	move.w	d0,obY(a1)
0000b432 237c0000b5fa0004	move.l	#Map_Glass,obMap(a1)
0000b43a 337cc38e0002	move.w	#ArtTile_MZ_Glass_Pillar|Tile_Pal3|Tile_Prio,obGfx(a1)
0000b440 137c00040001	move.b	#4,obRender(a1)
0000b446 3369000c0030	move.w	obY(a1),objoff_30(a1)
0000b44c 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000b452 137c00200019	move.b	#$20,obActWid(a1)
0000b458 137c00040018	move.b	#4,obPriority(a1)
0000b45e 135a001a	move.b	(a2)+,obFrame(a1)
0000b462 2348003c	move.l	a0,glass_parent(a1)
0000b466 51c9ffa8	dbf	d1,.Repeat
0000b46a 137c00100019	move.b	#$10,obActWid(a1)
0000b470 137c00030018	move.b	#3,obPriority(a1)
0000b476 50290028	addq.b	#8,obSubtype(a1)
0000b47a 0229000f0028	andi.b	#$F,obSubtype(a1)
0000b480 317c00900032	move.w	#$90,glass_dist(a0)
0000b486 08e800040001	bset	#4,obRender(a0)
0000b48c 61000050	bsr.w	Glass_Types
0000b490 323c002b	move.w	#$2B,d1
0000b494 343c0048	move.w	#$48,d2
0000b498 363c0049	move.w	#$49,d3
0000b49c 38280008	move.w	obX(a0),d4
0000b4a0 60004534	bra.w	SolidObject
0000b4a4 2268003c	movea.l	objoff_3C(a0),a1
0000b4a8 316900320032	move.w	glass_dist(a1),glass_dist(a0)
0000b4ae 6000002e	bra.w	Glass_Types
0000b4b2 6100002a	bsr.w	Glass_Types
0000b4b6 323c002b	move.w	#$2B,d1
0000b4ba 343c0038	move.w	#$38,d2
0000b4be 363c0039	move.w	#$39,d3
0000b4c2 38280008	move.w	obX(a0),d4
0000b4c6 6000450e	bra.w	SolidObject
0000b4ca 2268003c	movea.l	objoff_3C(a0),a1
0000b4ce 316900320032	move.w	glass_dist(a1),glass_dist(a0)
0000b4d4 3169000c0030	move.w	obY(a1),objoff_30(a0)
0000b4da 60000002	bra.w	Glass_Types
0000b4de 7000	moveq	#0,d0
0000b4e0 10280028	move.b	obSubtype(a0),d0
0000b4e4 02400007	andi.w	#7,d0
0000b4e8 d040	add.w	d0,d0
0000b4ea 323b0006	move.w	Glass_TypeIndex(pc,d0.w),d1
0000b4ee 4efb1002	jmp	Glass_TypeIndex(pc,d1.w)
0000b4fc 4e75	rts	
0000b4fe 1038fe70	move.b	(v_oscillate+$12).w,d0
0000b502 323c0040	move.w	#$40,d1
0000b506 600c	bra.s	loc_B514
0000b508 1038fe70	move.b	(v_oscillate+$12).w,d0
0000b50c 323c0040	move.w	#$40,d1
0000b510 4440	neg.w	d0
0000b512 d041	add.w	d1,d0
0000b514 082800030028	btst	#3,obSubtype(a0)
0000b51a 670a	beq.s	loc_B526
0000b51c 4440	neg.w	d0
0000b51e d041	add.w	d1,d0
0000b520 e208	lsr.b	#1,d0
0000b522 06400020	addi.w	#$20,d0
0000b526 600000c6	bra.w	loc_B5EE
0000b52a 082800030028	btst	#3,obSubtype(a0)
0000b530 670c	beq.s	loc_B53E
0000b532 1038fe70	move.b	(v_oscillate+$12).w,d0
0000b536 04400010	subi.w	#$10,d0
0000b53a 600000b2	bra.w	loc_B5EE
0000b53e 082800030022	btst	#3,obStatus(a0)
0000b544 6608	bne.s	loc_B54E
0000b546 08a800000034	bclr	#0,objoff_34(a0)
0000b54c 6034	bra.s	loc_B582
0000b54e 4a280034	tst.b	objoff_34(a0)
0000b552 662e	bne.s	loc_B582
0000b554 117c00010034	move.b	#1,objoff_34(a0)
0000b55a 08e800000035	bset	#0,objoff_35(a0)
0000b560 6720	beq.s	loc_B582
0000b562 08e800070034	bset	#7,objoff_34(a0)
0000b568 317c00100036	move.w	#$10,objoff_36(a0)
0000b56e 117c000a0038	move.b	#$A,objoff_38(a0)
0000b574 0c6800400032	cmpi.w	#$40,glass_dist(a0)
0000b57a 6606	bne.s	loc_B582
0000b57c 317c00400036	move.w	#$40,objoff_36(a0)
0000b582 4a280034	tst.b	objoff_34(a0)
0000b586 6a22	bpl.s	loc_B5AA
0000b588 4a280038	tst.b	objoff_38(a0)
0000b58c 6706	beq.s	loc_B594
0000b58e 53280038	subq.b	#1,objoff_38(a0)
0000b592 6616	bne.s	loc_B5AA
0000b594 4a680032	tst.w	glass_dist(a0)
0000b598 670a	beq.s	loc_B5A4
0000b59a 53680032	subq.w	#1,glass_dist(a0)
0000b59e 53680036	subq.w	#1,objoff_36(a0)
0000b5a2 6606	bne.s	loc_B5AA
0000b5a4 08a800070034	bclr	#7,objoff_34(a0)
0000b5aa 30280032	move.w	glass_dist(a0),d0
0000b5ae 603e	bra.s	loc_B5EE
0000b5b0 082800030028	btst	#3,obSubtype(a0)
0000b5b6 670a	beq.s	Glass_ChkSwitch
0000b5b8 1038fe70	move.b	(v_oscillate+$12).w,d0
0000b5bc 04400010	subi.w	#$10,d0
0000b5c0 602c	bra.s	loc_B5EE
0000b5c2 4a280034	tst.b	objoff_34(a0)
0000b5c6 6618	bne.s	loc_B5E0
0000b5c8 45f8f7e0	lea	(f_switch).w,a2
0000b5cc 7000	moveq	#0,d0
0000b5ce 10280028	move.b	obSubtype(a0),d0
0000b5d2 e848	lsr.w	#4,d0
0000b5d4 4a320000	tst.b	(a2,d0.w)
0000b5d8 6710	beq.s	loc_B5EA
0000b5da 117c00010034	move.b	#1,objoff_34(a0)
0000b5e0 4a680032	tst.w	glass_dist(a0)
0000b5e4 6704	beq.s	loc_B5EA
0000b5e6 55680032	subq.w	#2,glass_dist(a0)
0000b5ea 30280032	move.w	glass_dist(a0),d0
0000b5ee 32280030	move.w	objoff_30(a0),d1
0000b5f2 9240	sub.w	d0,d1
0000b5f4 3141000c	move.w	d1,obY(a0)
0000b5f8 4e75	rts	
0000b67c 7000	moveq	#0,d0
0000b67e 10280024	move.b	obRoutine(a0),d0
0000b682 323b0006	move.w	CStom_Index(pc,d0.w),d1
0000b686 4efb1002	jmp	CStom_Index(pc,d1.w)
0000b6b2 7000	moveq	#0,d0
0000b6b4 10280028	move.b	obSubtype(a0),d0
0000b6b8 6a14	bpl.s	loc_B6CE
0000b6ba 0240007f	andi.w	#$7F,d0
0000b6be d040	add.w	d0,d0
0000b6c0 45fb00d2	lea	CStom_SwchNums(pc,d0.w),a2
0000b6c4 115a003a	move.b	(a2)+,CStom_switch(a0)
0000b6c8 101a	move.b	(a2)+,d0
0000b6ca 11400028	move.b	d0,obSubtype(a0)
0000b6ce 0200000f	andi.b	#$F,d0
0000b6d2 d040	add.w	d0,d0
0000b6d4 343b00ce	move.w	CStom_Lengths(pc,d0.w),d2
0000b6d8 4a40	tst.w	d0
0000b6da 6604	bne.s	loc_B6E0
0000b6dc 31420032	move.w	d2,objoff_32(a0)
0000b6e0 45f90000b698	lea	(CStom_Var).l,a2
0000b6e6 2248	movea.l	a0,a1
0000b6e8 7203	moveq	#3,d1
0000b6ea 6008	bra.s	CStom_MakeStomper
0000b6ec 610023b4	bsr.w	FindNextFreeObj
0000b6f0 66000086	bne.w	CStom_SetSize
0000b6f4 135a0024	move.b	(a2)+,obRoutine(a1)
0000b6fe 336800080008	move.w	obX(a0),obX(a1)
0000b704 101a	move.b	(a2)+,d0
0000b706 4880	ext.w	d0
0000b708 d068000c	add.w	obY(a0),d0
0000b70c 3340000c	move.w	d0,obY(a1)
0000b710 237c0000bb4e0004	move.l	#Map_CStom,obMap(a1)
0000b718 337c03000002	move.w	#ArtTile_MZ_Spike_Stomper,obGfx(a1)
0000b71e 137c00040001	move.b	#4,obRender(a1)
0000b724 3369000c0030	move.w	obY(a1),objoff_30(a1)
0000b72a 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000b730 137c00100019	move.b	#$10,obActWid(a1)
0000b736 33420034	move.w	d2,objoff_34(a1)
0000b73a 137c00040018	move.b	#4,obPriority(a1)
0000b740 135a001a	move.b	(a2)+,obFrame(a1)
0000b744 0c290001001a	cmpi.b	#1,obFrame(a1)
0000b74a 661e	bne.s	loc_B76A
0000b74c 5341	subq.w	#1,d1
0000b74e 10280028	move.b	obSubtype(a0),d0
0000b752 024000f0	andi.w	#$F0,d0
0000b756 0c400020	cmpi.w	#$20,d0
0000b75a 6798	beq.s	CStom_MakeStomper
0000b75c 137c00380019	move.b	#$38,obActWid(a1)
0000b762 137c00900020	move.b	#$90,obColType(a1)
0000b768 5241	addq.w	#1,d1
0000b76a 2348003c	move.l	a0,objoff_3C(a1)
0000b76e 51c9ff7c	dbf	d1,CStom_Loop
0000b772 137c00030018	move.b	#3,obPriority(a1)
0000b778 7000	moveq	#0,d0
0000b77a 10280028	move.b	obSubtype(a0),d0
0000b77e e648	lsr.w	#3,d0
0000b780 0200000e	andi.b	#$E,d0
0000b784 45fb000c	lea	CStom_Var2(pc,d0.w),a2
0000b788 115a0019	move.b	(a2)+,obActWid(a0)
0000b78c 115a001a	move.b	(a2)+,obFrame(a0)
0000b790 6006	bra.s	CStom_Block
0000b798 6100009a	bsr.w	CStom_Types
0000b79c 31e8000cf7a4	move.w	obY(a0),(v_obj31ypos).w
0000b7a2 7200	moveq	#0,d1
0000b7a4 12280019	move.b	obActWid(a0),d1
0000b7a8 0641000b	addi.w	#$B,d1
0000b7ac 343c000c	move.w	#$C,d2
0000b7b0 363c000d	move.w	#$D,d3
0000b7b4 38280008	move.w	obX(a0),d4
0000b7b8 6100421c	bsr.w	SolidObject
0000b7bc 082800030022	btst	#3,obStatus(a0)
0000b7c2 6716	beq.s	CStom_Display
0000b7c4 0c2800100032	cmpi.b	#$10,objoff_32(a0)
0000b7ca 640e	bhs.s	CStom_Display
0000b7cc 2448	movea.l	a0,a2
0000b7ce 41f8d000	lea	(v_player).w,a0
0000b7d2 4eb90001b098	jsr	(KillSonic).l
0000b7d8 204a	movea.l	a2,a0
0000b7da 61001e28	bsr.w	DisplaySprite
0000b7de 60000034	bra.w	CStom_ChkDel
0000b7e2 117c00800016	move.b	#$80,obHeight(a0)
0000b7e8 08e800040001	bset	#4,obRender(a0)
0000b7ee 2268003c	movea.l	objoff_3C(a0),a1
0000b7f2 10290032	move.b	objoff_32(a1),d0
0000b7f6 ea08	lsr.b	#5,d0
0000b7f8 5600	addq.b	#3,d0
0000b7fa 1140001a	move.b	d0,obFrame(a0)
0000b7fe 2268003c	movea.l	objoff_3C(a0),a1
0000b802 7000	moveq	#0,d0
0000b804 10290032	move.b	objoff_32(a1),d0
0000b808 d0680030	add.w	objoff_30(a0),d0
0000b80c 3140000c	move.w	d0,obY(a0)
0000b810 61001df2	bsr.w	DisplaySprite
0000b814 30280008	move.w	obX(a0),d0
0000b818 0240ff80	andi.w	#$FF80,d0
0000b81c 3238f700	move.w	(v_screenposx).w,d1
0000b820 04410080	subi.w	#128,d1
0000b824 0241ff80	andi.w	#$FF80,d1
0000b828 9041	sub.w	d1,d0
0000b82a 0c400280	cmpi.w	#128+320+192,d0
0000b82e 62001e10	bhi.w	DeleteObject
0000b832 4e75	rts	
0000b834 10280028	move.b	obSubtype(a0),d0
0000b838 0240000f	andi.w	#$F,d0
0000b83c d040	add.w	d0,d0
0000b83e 323b0006	move.w	CStom_TypeIndex(pc,d0.w),d1
0000b842 4efb1002	jmp	CStom_TypeIndex(pc,d1.w)
0000b854 45f8f7e0	lea	(f_switch).w,a2
0000b858 7000	moveq	#0,d0
0000b85a 1028003a	move.b	CStom_switch(a0),d0
0000b85e 4a320000	tst.b	(a2,d0.w)
0000b862 6744	beq.s	loc_B8A8
0000b864 4a78f7a4	tst.w	(v_obj31ypos).w
0000b868 6a08	bpl.s	loc_B872
0000b86a 0c2800100032	cmpi.b	#$10,objoff_32(a0)
0000b870 672e	beq.s	loc_B8A0
0000b872 4a680032	tst.w	objoff_32(a0)
0000b876 6728	beq.s	loc_B8A0
0000b878 1038fe0f	move.b	(v_vblank_byte).w,d0
0000b87c 0200000f	andi.b	#$F,d0
0000b880 6610	bne.s	loc_B892
0000b882 4a280001	tst.b	obRender(a0)
0000b886 6a0a	bpl.s	loc_B892
0000b888 303c00c7	move.w	#sfx_ChainRise,d0
0000b88c 4eb90000139c	jsr	(QueueSound2).l
0000b892 046800800032	subi.w	#$80,objoff_32(a0)
0000b898 6446	bcc.s	CStom_Restart
0000b89a 317c00000032	move.w	#0,objoff_32(a0)
0000b8a0 317c00000012	move.w	#0,obVelY(a0)
0000b8a6 6038	bra.s	CStom_Restart
0000b8a8 32280034	move.w	objoff_34(a0),d1
0000b8ac b2680032	cmp.w	objoff_32(a0),d1
0000b8b0 672e	beq.s	CStom_Restart
0000b8b2 30280012	move.w	obVelY(a0),d0
0000b8b6 066800700012	addi.w	#$70,obVelY(a0)
0000b8bc d1680032	add.w	d0,objoff_32(a0)
0000b8c0 b2680032	cmp.w	objoff_32(a0),d1
0000b8c4 621a	bhi.s	CStom_Restart
0000b8c6 31410032	move.w	d1,objoff_32(a0)
0000b8ca 317c00000012	move.w	#0,obVelY(a0)
0000b8d0 4a280001	tst.b	obRender(a0)
0000b8d4 6a0a	bpl.s	CStom_Restart
0000b8d6 303c00bd	move.w	#sfx_ChainStomp,d0
0000b8da 4eb90000139c	jsr	(QueueSound2).l
0000b8e0 7000	moveq	#0,d0
0000b8e2 10280032	move.b	objoff_32(a0),d0
0000b8e6 d0680030	add.w	objoff_30(a0),d0
0000b8ea 3140000c	move.w	d0,obY(a0)
0000b8ee 4e75	rts	
0000b8f0 4a680036	tst.w	objoff_36(a0)
0000b8f4 6742	beq.s	loc_B938
0000b8f6 4a680038	tst.w	objoff_38(a0)
0000b8fa 6706	beq.s	loc_B902
0000b8fc 53680038	subq.w	#1,objoff_38(a0)
0000b900 607a	bra.s	loc_B97C
0000b902 1038fe0f	move.b	(v_vblank_byte).w,d0
0000b906 0200000f	andi.b	#$F,d0
0000b90a 6610	bne.s	loc_B91C
0000b90c 4a280001	tst.b	obRender(a0)
0000b910 6a0a	bpl.s	loc_B91C
0000b912 303c00c7	move.w	#sfx_ChainRise,d0
0000b916 4eb90000139c	jsr	(QueueSound2).l
0000b91c 046800800032	subi.w	#$80,objoff_32(a0)
0000b922 6458	bcc.s	loc_B97C
0000b924 317c00000032	move.w	#0,objoff_32(a0)
0000b92a 317c00000012	move.w	#0,obVelY(a0)
0000b930 317c00000036	move.w	#0,objoff_36(a0)
0000b936 6044	bra.s	loc_B97C
0000b938 32280034	move.w	objoff_34(a0),d1
0000b93c b2680032	cmp.w	objoff_32(a0),d1
0000b940 673a	beq.s	loc_B97C
0000b942 30280012	move.w	obVelY(a0),d0
0000b946 066800700012	addi.w	#$70,obVelY(a0)
0000b94c d1680032	add.w	d0,objoff_32(a0)
0000b950 b2680032	cmp.w	objoff_32(a0),d1
0000b954 6226	bhi.s	loc_B97C
0000b956 31410032	move.w	d1,objoff_32(a0)
0000b95a 317c00000012	move.w	#0,obVelY(a0)
0000b960 317c00010036	move.w	#1,objoff_36(a0)
0000b966 317c003c0038	move.w	#$3C,objoff_38(a0)
0000b96c 4a280001	tst.b	obRender(a0)
0000b970 6a0a	bpl.s	loc_B97C
0000b972 303c00bd	move.w	#sfx_ChainStomp,d0
0000b976 4eb90000139c	jsr	(QueueSound2).l
0000b97c 6000ff62	bra.w	CStom_Restart
0000b980 3038d008	move.w	(v_player+obX).w,d0
0000b984 90680008	sub.w	obX(a0),d0
0000b988 6402	bcc.s	loc_B98C
0000b98a 4440	neg.w	d0
0000b98c 0c400090	cmpi.w	#$90,d0
0000b990 6404	bhs.s	loc_B996
0000b992 52280028	addq.b	#1,obSubtype(a0)
0000b996 6000ff48	bra.w	CStom_Restart
0000b99a 7000	moveq	#0,d0
0000b99c 10280024	move.b	obRoutine(a0),d0
0000b9a0 323b0006	move.w	SStom_Index(pc,d0.w),d1
0000b9a4 4efb1002	jmp	SStom_Index(pc,d1.w)
0000b9c4 7000	moveq	#0,d0
0000b9c6 10280028	move.b	obSubtype(a0),d0
0000b9ca d040	add.w	d0,d0
0000b9cc 343b00f0	move.w	SStom_Len(pc,d0.w),d2
0000b9d0 45f90000b9b2	lea	(SStom_Var).l,a2
0000b9d6 2248	movea.l	a0,a1
0000b9d8 7203	moveq	#3,d1
0000b9da 6006	bra.s	.load
0000b9dc 610020c4	bsr.w	FindNextFreeObj
0000b9e0 6670	bne.s	.fail
0000b9e2 135a0024	move.b	(a2)+,obRoutine(a1)
0000b9ec 3368000c000c	move.w	obY(a0),obY(a1)
0000b9f2 101a	move.b	(a2)+,d0
0000b9f4 4880	ext.w	d0
0000b9f6 d0680008	add.w	obX(a0),d0
0000b9fa 33400008	move.w	d0,obX(a1)
0000b9fe 237c0000bc5a0004	move.l	#Map_SStom,obMap(a1)
0000ba06 337c03000002	move.w	#ArtTile_MZ_Spike_Stomper,obGfx(a1)
0000ba0c 137c00040001	move.b	#4,obRender(a1)
0000ba12 336900080030	move.w	obX(a1),objoff_30(a1)
0000ba18 33680008003a	move.w	obX(a0),objoff_3A(a1)
0000ba1e 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000ba24 137c00200019	move.b	#$20,obActWid(a1)
0000ba2a 33420034	move.w	d2,objoff_34(a1)
0000ba2e 137c00040018	move.b	#4,obPriority(a1)
0000ba34 0c120001	cmpi.b	#1,(a2)
0000ba38 6606	bne.s	.notspikes
0000ba3a 137c00910020	move.b	#$91,obColType(a1)
0000ba40 135a001a	move.b	(a2)+,obFrame(a1)
0000ba44 2348003c	move.l	a0,objoff_3C(a1)
0000ba48 51c9ff92	dbf	d1,.loop
0000ba4c 137c00030018	move.b	#3,obPriority(a1)
0000ba52 117c00100019	move.b	#$10,obActWid(a0)
0000ba58 3f280008	move.w	obX(a0),-(sp)
0000ba5c 61000068	bsr.w	SStom_Move
0000ba60 323c0017	move.w	#$17,d1
0000ba64 343c0020	move.w	#$20,d2
0000ba68 363c0020	move.w	#$20,d3
0000ba6c 381f	move.w	(sp)+,d4
0000ba6e 61003f66	bsr.w	SolidObject
0000ba72 61001b90	bsr.w	DisplaySprite
0000ba76 6000002e	bra.w	SStom_ChkDel
0000ba7a 2268003c	movea.l	objoff_3C(a0),a1
0000ba7e 10290032	move.b	objoff_32(a1),d0
0000ba82 06000010	addi.b	#$10,d0
0000ba86 ea08	lsr.b	#5,d0
0000ba88 5600	addq.b	#3,d0
0000ba8a 1140001a	move.b	d0,obFrame(a0)
0000ba8e 2268003c	movea.l	objoff_3C(a0),a1
0000ba92 7000	moveq	#0,d0
0000ba94 10290032	move.b	objoff_32(a1),d0
0000ba98 4440	neg.w	d0
0000ba9a d0680030	add.w	objoff_30(a0),d0
0000ba9e 31400008	move.w	d0,obX(a0)
0000baa2 61001b60	bsr.w	DisplaySprite
0000baa6 3028003a	move.w	objoff_3A(a0),d0
0000baaa 0240ff80	andi.w	#$FF80,d0
0000baae 3238f700	move.w	(v_screenposx).w,d1
0000bab2 04410080	subi.w	#128,d1
0000bab6 0241ff80	andi.w	#$FF80,d1
0000baba 9041	sub.w	d1,d0
0000babc 0c400280	cmpi.w	#128+320+192,d0
0000bac0 62001b7e	bhi.w	DeleteObject
0000bac4 4e75	rts	
0000bac6 7000	moveq	#0,d0
0000bac8 10280028	move.b	obSubtype(a0),d0
0000bacc d040	add.w	d0,d0
0000bace 323b0006	move.w	SStom_Move_Index(pc,d0.w),d1
0000bad2 4efb1002	jmp	SStom_Move_Index(pc,d1.w)
0000bada 4a680036	tst.w	objoff_36(a0)
0000bade 6728	beq.s	loc_BB08
0000bae0 4a680038	tst.w	objoff_38(a0)
0000bae4 6706	beq.s	loc_BAEC
0000bae6 53680038	subq.w	#1,objoff_38(a0)
0000baea 6050	bra.s	loc_BB3C
0000baec 046800800032	subi.w	#$80,objoff_32(a0)
0000baf2 6448	bcc.s	loc_BB3C
0000baf4 317c00000032	move.w	#0,objoff_32(a0)
0000bafa 317c00000010	move.w	#0,obVelX(a0)
0000bb00 317c00000036	move.w	#0,objoff_36(a0)
0000bb06 6034	bra.s	loc_BB3C
0000bb08 32280034	move.w	objoff_34(a0),d1
0000bb0c b2680032	cmp.w	objoff_32(a0),d1
0000bb10 672a	beq.s	loc_BB3C
0000bb12 30280010	move.w	obVelX(a0),d0
0000bb16 066800700010	addi.w	#$70,obVelX(a0)
0000bb1c d1680032	add.w	d0,objoff_32(a0)
0000bb20 b2680032	cmp.w	objoff_32(a0),d1
0000bb24 6216	bhi.s	loc_BB3C
0000bb26 31410032	move.w	d1,objoff_32(a0)
0000bb2a 317c00000010	move.w	#0,obVelX(a0)
0000bb30 317c00010036	move.w	#1,objoff_36(a0)
0000bb36 317c003c0038	move.w	#$3C,objoff_38(a0)
0000bb3c 7000	moveq	#0,d0
0000bb3e 10280032	move.b	objoff_32(a0),d0
0000bb42 4440	neg.w	d0
0000bb44 d0680030	add.w	objoff_30(a0),d0
0000bb48 31400008	move.w	d0,obX(a0)
0000bb4c 4e75	rts	
0000bd2e 7000	moveq	#0,d0
0000bd30 10280024	move.b	obRoutine(a0),d0
0000bd34 323b0006	move.w	But_Index(pc,d0.w),d1
0000bd38 4efb1002	jmp	But_Index(pc,d1.w)
0000bd40 54280024	addq.b	#2,obRoutine(a0)
0000bd44 217c0000bea40004	move.l	#Map_But,obMap(a0)
0000bd4c 317c45130002	move.w	#ArtTile_Button+4|Tile_Pal3,obGfx(a0)
0000bd52 0c380002fe10	cmpi.b	#id_MZ,(v_zone).w
0000bd58 6706	beq.s	But_IsMZ
0000bd5a 317c05130002	move.w	#ArtTile_Button+4,obGfx(a0)
0000bd60 117c00040001	move.b	#4,obRender(a0)
0000bd66 117c00100019	move.b	#$10,obActWid(a0)
0000bd6c 117c00040018	move.b	#4,obPriority(a0)
0000bd72 5668000c	addq.w	#3,obY(a0)
0000bd76 4a280001	tst.b	obRender(a0)
0000bd7a 6a7c	bpl.s	But_Display
0000bd7c 323c001b	move.w	#$1B,d1
0000bd80 343c0005	move.w	#5,d2
0000bd84 363c0005	move.w	#5,d3
0000bd88 38280008	move.w	obX(a0),d4
0000bd8c 61003c48	bsr.w	SolidObject
0000bd90 08a80000001a	bclr	#0,obFrame(a0)
0000bd96 10280028	move.b	obSubtype(a0),d0
0000bd9a 0240000f	andi.w	#$F,d0
0000bd9e 47f8f7e0	lea	(f_switch).w,a3
0000bda2 47f30000	lea	(a3,d0.w),a3
0000bda6 7600	moveq	#0,d3
0000bda8 082800060028	btst	#6,obSubtype(a0)
0000bdae 6702	beq.s	loc_BDB2
0000bdb0 7607	moveq	#7,d3
0000bdb2 4a280028	tst.b	obSubtype(a0)
0000bdb6 6a06	bpl.s	loc_BDBE
0000bdb8 61000068	bsr.w	But_MZBlock
0000bdbc 660a	bne.s	loc_BDC8
0000bdbe 4a280025	tst.b	obSolid(a0)
0000bdc2 6604	bne.s	loc_BDC8
0000bdc4 0793	bclr	d3,(a3)
0000bdc6 6016	bra.s	loc_BDDE
0000bdc8 4a13	tst.b	(a3)
0000bdca 660a	bne.s	loc_BDD6
0000bdcc 303c00cd	move.w	#sfx_Switch,d0
0000bdd0 4eb90000139c	jsr	(QueueSound2).l
0000bdd6 07d3	bset	d3,(a3)
0000bdd8 08e80000001a	bset	#0,obFrame(a0)
0000bdde 082800050028	btst	#5,obSubtype(a0)
0000bde4 6712	beq.s	But_Display
0000bde6 5328001e	subq.b	#1,obTimeFrame(a0)
0000bdea 6a0c	bpl.s	But_Display
0000bdec 117c0007001e	move.b	#7,obTimeFrame(a0)
0000bdf2 08680001001a	bchg	#1,obFrame(a0)
0000bdf8 6100180a	bsr.w	DisplaySprite
0000bdfc 30280008	move.w	obX(a0),d0
0000be00 0240ff80	andi.w	#$FF80,d0
0000be04 3238f700	move.w	(v_screenposx).w,d1
0000be08 04410080	subi.w	#128,d1
0000be0c 0241ff80	andi.w	#$FF80,d1
0000be10 9041	sub.w	d1,d0
0000be12 0c400280	cmpi.w	#128+320+192,d0
0000be16 62000004	bhi.w	But_Delete
0000be1a 4e75	rts	
0000be1c 61001822	bsr.w	DeleteObject
0000be20 4e75	rts	
0000be22 3f03	move.w	d3,-(sp)
0000be24 34280008	move.w	obX(a0),d2
0000be28 3628000c	move.w	obY(a0),d3
0000be2c 04420010	subi.w	#$10,d2
0000be30 5143	subq.w	#8,d3
0000be32 383c0020	move.w	#$20,d4
0000be36 3a3c0010	move.w	#$10,d5
0000be3a 43f8d800	lea	(v_lvlobjspace).w,a1
0000be3e 3c3c005f	move.w	#(v_lvlobjend-v_lvlobjspace)/object_size-1,d6
0000be42 4a290001	tst.b	obRender(a1)
0000be46 6a06	bpl.s	loc_BE4E
0000be48 0c110033	cmpi.b	#id_PushBlock,obID(a1)
0000be4c 6710	beq.s	loc_BE5E
0000be4e 43e90040	lea	object_size(a1),a1
0000be52 51ceffee	dbf	d6,But_MZLoop
0000be56 361f	move.w	(sp)+,d3
0000be58 7000	moveq	#0,d0
0000be5a 4e75	rts	
0000be5e 7001	moveq	#1,d0
0000be60 0240003f	andi.w	#$3F,d0
0000be64 d040	add.w	d0,d0
0000be66 45fb00f2	lea	But_MZData-2(pc,d0.w),a2
0000be6a 121a	move.b	(a2)+,d1
0000be6c 4881	ext.w	d1
0000be6e 30290008	move.w	obX(a1),d0
0000be72 9041	sub.w	d1,d0
0000be74 9042	sub.w	d2,d0
0000be76 6408	bcc.s	loc_BE80
0000be78 d241	add.w	d1,d1
0000be7a d041	add.w	d1,d0
0000be7c 6506	bcs.s	loc_BE84
0000be7e 60ce	bra.s	loc_BE4E
0000be80 b044	cmp.w	d4,d0
0000be82 62ca	bhi.s	loc_BE4E
0000be84 121a	move.b	(a2)+,d1
0000be86 4881	ext.w	d1
0000be88 3029000c	move.w	obY(a1),d0
0000be8c 9041	sub.w	d1,d0
0000be8e 9043	sub.w	d3,d0
0000be90 6408	bcc.s	loc_BE9A
0000be92 d241	add.w	d1,d1
0000be94 d041	add.w	d1,d0
0000be96 6506	bcs.s	loc_BE9E
0000be98 60b4	bra.s	loc_BE4E
0000be9a b045	cmp.w	d5,d0
0000be9c 62b0	bhi.s	loc_BE4E
0000be9e 361f	move.w	(sp)+,d3
0000bea0 7001	moveq	#1,d0
0000bea2 4e75	rts	
0000bed2 7000	moveq	#0,d0
0000bed4 10280024	move.b	obRoutine(a0),d0
0000bed8 323b0006	move.w	PushB_Index(pc,d0.w),d1
0000bedc 4efb1002	jmp	PushB_Index(pc,d1.w)
0000beea 54280024	addq.b	#2,obRoutine(a0)
0000beee 117c000f0016	move.b	#$F,obHeight(a0)
0000bef4 117c000f0017	move.b	#$F,obWidth(a0)
0000befa 217c0000c2e60004	move.l	#Map_Push,obMap(a0)
0000bf02 317c42b80002	move.w	#ArtTile_MZ_Block|Tile_Pal3,obGfx(a0)
0000bf08 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
0000bf0e 6606	bne.s	.notLZ
0000bf10 317c43de0002	move.w	#ArtTile_LZ_Push_Block|Tile_Pal3,obGfx(a0)
0000bf16 117c00040001	move.b	#4,obRender(a0)
0000bf1c 117c00030018	move.b	#3,obPriority(a0)
0000bf22 316800080034	move.w	obX(a0),objoff_34(a0)
0000bf28 3168000c0036	move.w	obY(a0),objoff_36(a0)
0000bf2e 7000	moveq	#0,d0
0000bf30 10280028	move.b	obSubtype(a0),d0
0000bf34 d040	add.w	d0,d0
0000bf36 0240000e	andi.w	#$E,d0
0000bf3a 45fb00aa	lea	PushB_Var(pc,d0.w),a2
0000bf3e 115a0019	move.b	(a2)+,obActWid(a0)
0000bf42 115a001a	move.b	(a2)+,obFrame(a0)
0000bf46 4a280028	tst.b	obSubtype(a0)
0000bf4a 6706	beq.s	.chkgone
0000bf4c 317cc2b80002	move.w	#ArtTile_MZ_Block|Tile_Pal3|Tile_Prio,obGfx(a0)
0000bf52 45f8fc00	lea	(v_objstate).w,a2
0000bf56 7000	moveq	#0,d0
0000bf58 10280023	move.b	obRespawnNo(a0),d0
0000bf5c 6710	beq.s	PushB_Action
0000bf5e 08b200070002	bclr	#7,2(a2,d0.w)
0000bf64 08f200000002	bset	#0,2(a2,d0.w)
0000bf6a 660016d4	bne.w	DeleteObject
0000bf6e 4a280032	tst.b	objoff_32(a0)
0000bf72 660000d2	bne.w	loc_C046
0000bf76 7200	moveq	#0,d1
0000bf78 12280019	move.b	obActWid(a0),d1
0000bf7c 0641000b	addi.w	#$B,d1
0000bf80 343c0010	move.w	#$10,d2
0000bf84 363c0011	move.w	#$11,d3
0000bf88 38280008	move.w	obX(a0),d4
0000bf8c 610001f8	bsr.w	loc_C186
0000bf90 0c780200fe10	cmpi.w	#id_MZ_act1,(v_zone).w
0000bf96 662e	bne.s	loc_BFC6
0000bf98 08a800070028	bclr	#7,obSubtype(a0)
0000bf9e 30280008	move.w	obX(a0),d0
0000bfa2 0c400a20	cmpi.w	#$A20,d0
0000bfa6 651e	blo.s	loc_BFC6
0000bfa8 0c400aa1	cmpi.w	#$AA1,d0
0000bfac 6418	bhs.s	loc_BFC6
0000bfae 3038f7a4	move.w	(v_obj31ypos).w,d0
0000bfb2 0440001c	subi.w	#$1C,d0
0000bfb6 3140000c	move.w	d0,obY(a0)
0000bfba 08f80007f7a4	bset	#7,(v_obj31ypos).w
0000bfc0 08e800070028	bset	#7,obSubtype(a0)
0000bfc6 30280008	move.w	obX(a0),d0
0000bfca 0240ff80	andi.w	#$FF80,d0
0000bfce 3238f700	move.w	(v_screenposx).w,d1
0000bfd2 04410080	subi.w	#128,d1
0000bfd6 0241ff80	andi.w	#$FF80,d1
0000bfda 9041	sub.w	d1,d0
0000bfdc 0c400280	cmpi.w	#128+320+192,d0
0000bfe0 6204	bhi.s	loc_BFE6
0000bfe2 60001620	bra.w	DisplaySprite
0000bfe6 30280034	move.w	objoff_34(a0),d0
0000bfea 0240ff80	andi.w	#$FF80,d0
0000bfee 3238f700	move.w	(v_screenposx).w,d1
0000bff2 04410080	subi.w	#128,d1
0000bff6 0241ff80	andi.w	#$FF80,d1
0000bffa 9041	sub.w	d1,d0
0000bffc 0c400280	cmpi.w	#128+320+192,d0
0000c000 6214	bhi.s	loc_C016
0000c002 316800340008	move.w	objoff_34(a0),obX(a0)
0000c008 31680036000c	move.w	objoff_36(a0),obY(a0)
0000c00e 117c00040024	move.b	#4,obRoutine(a0)
0000c014 6016	bra.s	PushB_ChkVisible
0000c016 45f8fc00	lea	(v_objstate).w,a2
0000c01a 7000	moveq	#0,d0
0000c01c 10280023	move.b	obRespawnNo(a0),d0
0000c020 6706	beq.s	loc_C028
0000c022 08b200000002	bclr	#0,2(a2,d0.w)
0000c028 60001616	bra.w	DeleteObject
0000c02c 61001878	bsr.w	ChkPartiallyVisible
0000c030 6712	beq.s	locret_C044
0000c032 117c00020024	move.b	#2,obRoutine(a0)
0000c038 42280032	clr.b	objoff_32(a0)
0000c03c 42680010	clr.w	obVelX(a0)
0000c040 42680012	clr.w	obVelY(a0)
0000c044 4e75	rts	
0000c046 3f280008	move.w	obX(a0),-(sp)
0000c04a 0c2800040025	cmpi.b	#4,obSolid(a0)
0000c050 6404	bhs.s	loc_C056
0000c052 6100158a	bsr.w	SpeedToPos
0000c056 082800010022	btst	#1,obStatus(a0)
0000c05c 6742	beq.s	loc_C0A0
0000c05e 066800180012	addi.w	#$18,obVelY(a0)
0000c064 4eb900014e18	jsr	(ObjFloorDist).l
0000c06a 4a41	tst.w	d1
0000c06c 6a000030	bpl.w	loc_C09E
0000c070 d368000c	add.w	d1,obY(a0)
0000c074 42680012	clr.w	obVelY(a0)
0000c078 08a800010022	bclr	#1,obStatus(a0)
0000c07e 3011	move.w	(a1),d0
0000c080 024003ff	andi.w	#$3FF,d0
0000c084 0c40016a	cmpi.w	#$16A,d0
0000c088 6514	blo.s	loc_C09E
0000c08a 30280030	move.w	objoff_30(a0),d0
0000c08e e640	asr.w	#3,d0
0000c090 31400010	move.w	d0,obVelX(a0)
0000c094 117c00010032	move.b	#1,objoff_32(a0)
0000c09a 4268000e	clr.w	obY+2(a0)
0000c09e 6046	bra.s	loc_C0E6
0000c0a0 4a680010	tst.w	obVelX(a0)
0000c0a4 67000030	beq.w	loc_C0D6
0000c0a8 6b12	bmi.s	loc_C0BC
0000c0aa 7600	moveq	#0,d3
0000c0ac 16280019	move.b	obActWid(a0),d3
0000c0b0 4eb900014eda	jsr	(ObjHitWallRight).l
0000c0b6 4a41	tst.w	d1
0000c0b8 6b16	bmi.s	PushB_StopPush
0000c0ba 602a	bra.s	loc_C0E6
0000c0bc 7600	moveq	#0,d3
0000c0be 16280019	move.b	obActWid(a0),d3
0000c0c2 4643	not.w	d3
0000c0c4 4eb90001506c	jsr	(ObjHitWallLeft).l
0000c0ca 4a41	tst.w	d1
0000c0cc 6b02	bmi.s	PushB_StopPush
0000c0ce 6016	bra.s	loc_C0E6
0000c0d0 42680010	clr.w	obVelX(a0)
0000c0d4 6010	bra.s	loc_C0E6
0000c0d6 06a800002001000c	addi.l	#$2001,obY(a0)
0000c0de 0c2800a0000f	cmpi.b	#$A0,obY+3(a0)
0000c0e4 641e	bhs.s	loc_C104
0000c0e6 7200	moveq	#0,d1
0000c0e8 12280019	move.b	obActWid(a0),d1
0000c0ec 0641000b	addi.w	#$B,d1
0000c0f0 343c0010	move.w	#$10,d2
0000c0f4 363c0011	move.w	#$11,d3
0000c0f8 381f	move.w	(sp)+,d4
0000c0fa 6100008a	bsr.w	loc_C186
0000c0fe 611a	bsr.s	PushB_ChkLava
0000c100 6000fec4	bra.w	loc_BFC6
0000c104 381f	move.w	(sp)+,d4
0000c106 43f8d000	lea	(v_player).w,a1
0000c10a 08a900030022	bclr	#3,obStatus(a1)
0000c110 08a800030022	bclr	#3,obStatus(a0)
0000c116 6000fece	bra.w	loc_BFE6
0000c11a 0c780201fe10	cmpi.w	#id_MZ_act2,(v_zone).w
0000c120 661e	bne.s	PushB_ChkLava2
0000c122 343cffe0	move.w	#-$20,d2
0000c126 0c680dd00008	cmpi.w	#$DD0,obX(a0)
0000c12c 6730	beq.s	PushB_LoadLava
0000c12e 0c680cc00008	cmpi.w	#$CC0,obX(a0)
0000c134 6728	beq.s	PushB_LoadLava
0000c136 0c680ba00008	cmpi.w	#$BA0,obX(a0)
0000c13c 6720	beq.s	PushB_LoadLava
0000c13e 4e75	rts	
0000c140 0c780202fe10	cmpi.w	#id_MZ_act3,(v_zone).w
0000c146 6614	bne.s	PushB_NoLava
0000c148 343c0020	move.w	#$20,d2
0000c14c 0c6805600008	cmpi.w	#$560,obX(a0)
0000c152 670a	beq.s	PushB_LoadLava
0000c154 0c6805c00008	cmpi.w	#$5C0,obX(a0)
0000c15a 6702	beq.s	PushB_LoadLava
0000c15c 4e75	rts	
0000c15e 6100192c	bsr.w	FindFreeObj
0000c162 6620	bne.s	locret_C184
0000c16a 336800080008	move.w	obX(a0),obX(a1)
0000c170 d5690008	add.w	d2,obX(a1)
0000c174 3368000c000c	move.w	obY(a0),obY(a1)
0000c17a 06690010000c	addi.w	#$10,obY(a1)
0000c180 2348003c	move.l	a0,objoff_3C(a1)
0000c184 4e75	rts	
0000c186 10280025	move.b	obSolid(a0),d0
0000c18a 6700008c	beq.w	loc_C218
0000c18e 5500	subq.b	#2,d0
0000c190 6618	bne.s	loc_C1AA
0000c192 6100b42c	bsr.w	ExitPlatform
0000c196 082900030022	btst	#3,obStatus(a1)
0000c19c 6606	bne.s	loc_C1A4
0000c19e 42280025	clr.b	obSolid(a0)
0000c1a2 4e75	rts	
0000c1a4 3404	move.w	d4,d2
0000c1a6 6000b97a	bra.w	MvSonicOnPtfm
0000c1aa 5500	subq.b	#2,d0
0000c1ac 6644	bne.s	loc_C1F2
0000c1ae 6100142e	bsr.w	SpeedToPos
0000c1b2 066800180012	addi.w	#$18,obVelY(a0)
0000c1b8 4eb900014e18	jsr	(ObjFloorDist).l
0000c1be 4a41	tst.w	d1
0000c1c0 6a00002e	bpl.w	locret_C1F0
0000c1c4 d368000c	add.w	d1,obY(a0)
0000c1c8 42680012	clr.w	obVelY(a0)
0000c1cc 42280025	clr.b	obSolid(a0)
0000c1d0 3011	move.w	(a1),d0
0000c1d2 024003ff	andi.w	#$3FF,d0
0000c1d6 0c40016a	cmpi.w	#$16A,d0
0000c1da 6514	blo.s	locret_C1F0
0000c1dc 30280030	move.w	objoff_30(a0),d0
0000c1e0 e640	asr.w	#3,d0
0000c1e2 31400010	move.w	d0,obVelX(a0)
0000c1e6 117c00010032	move.b	#1,objoff_32(a0)
0000c1ec 4268000e	clr.w	obY+2(a0)
0000c1f0 4e75	rts	
0000c1f2 610013ea	bsr.w	SpeedToPos
0000c1f6 30280008	move.w	obX(a0),d0
0000c1fa 0240000c	andi.w	#$C,d0
0000c1fe 660000e4	bne.w	locret_C2E4
0000c202 0268fff00008	andi.w	#-$10,obX(a0)
0000c208 316800100030	move.w	obVelX(a0),objoff_30(a0)
0000c20e 42680010	clr.w	obVelX(a0)
0000c212 55280025	subq.b	#2,obSolid(a0)
0000c216 4e75	rts	
0000c218 610038ae	bsr.w	Solid_ChkEnter
0000c21c 4a44	tst.w	d4
0000c21e 670000c4	beq.w	locret_C2E4
0000c222 6b0000c0	bmi.w	locret_C2E4
0000c226 4a280032	tst.b	objoff_32(a0)
0000c22a 6704	beq.s	loc_C230
0000c22c 600000b6	bra.w	locret_C2E4
0000c230 4a40	tst.w	d0
0000c232 670000b0	beq.w	locret_C2E4
0000c236 6b30	bmi.s	loc_C268
0000c238 082900000022	btst	#0,obStatus(a1)
0000c23e 660000a4	bne.w	locret_C2E4
0000c242 3f00	move.w	d0,-(sp)
0000c244 7600	moveq	#0,d3
0000c246 16280019	move.b	obActWid(a0),d3
0000c24a 4eb900014eda	jsr	(ObjHitWallRight).l
0000c250 301f	move.w	(sp)+,d0
0000c252 4a41	tst.w	d1
0000c254 6b00008e	bmi.w	locret_C2E4
0000c258 06a8000100000008	addi.l	#$10000,obX(a0)
0000c260 7001	moveq	#1,d0
0000c262 323c0040	move.w	#$40,d1
0000c266 602c	bra.s	loc_C294
0000c268 082900000022	btst	#0,obStatus(a1)
0000c26e 6774	beq.s	locret_C2E4
0000c270 3f00	move.w	d0,-(sp)
0000c272 7600	moveq	#0,d3
0000c274 16280019	move.b	obActWid(a0),d3
0000c278 4643	not.w	d3
0000c27a 4eb90001506c	jsr	(ObjHitWallLeft).l
0000c280 301f	move.w	(sp)+,d0
0000c282 4a41	tst.w	d1
0000c284 6b5e	bmi.s	locret_C2E4
0000c286 04a8000100000008	subi.l	#$10000,obX(a0)
0000c28e 70ff	moveq	#-1,d0
0000c290 323cffc0	move.w	#-$40,d1
0000c294 43f8d000	lea	(v_player).w,a1
0000c298 d1690008	add.w	d0,obX(a1)
0000c29c 33410014	move.w	d1,obInertia(a1)
0000c2a0 337c00000010	move.w	#0,obVelX(a1)
0000c2a6 3f00	move.w	d0,-(sp)
0000c2a8 303c00a7	move.w	#sfx_Push,d0
0000c2ac 4eb90000139c	jsr	(QueueSound2).l
0000c2b2 301f	move.w	(sp)+,d0
0000c2b4 4a280028	tst.b	obSubtype(a0)
0000c2b8 6b2a	bmi.s	locret_C2E4
0000c2ba 3f00	move.w	d0,-(sp)
0000c2bc 4eb900014e18	jsr	(ObjFloorDist).l
0000c2c2 301f	move.w	(sp)+,d0
0000c2c4 0c410004	cmpi.w	#4,d1
0000c2c8 6f16	ble.s	loc_C2E0
0000c2ca 317c04000010	move.w	#$400,obVelX(a0)
0000c2d0 4a40	tst.w	d0
0000c2d2 6a04	bpl.s	loc_C2D8
0000c2d4 44680010	neg.w	obVelX(a0)
0000c2d8 117c00060025	move.b	#6,obSolid(a0)
0000c2de 6004	bra.s	locret_C2E4
0000c2e0 d368000c	add.w	d1,obY(a0)
0000c2e4 4e75	rts	
0000c306 7000	moveq	#0,d0
0000c308 10280024	move.b	obRoutine(a0),d0
0000c30c 323b0006	move.w	Card_Index(pc,d0.w),d1
0000c310 4efb1002	jmp	Card_Index(pc,d1.w)
0000c31c 2248	movea.l	a0,a1
0000c31e 7000	moveq	#0,d0
0000c320 1038fe10	move.b	(v_zone).w,d0
0000c324 0c780103fe10	cmpi.w	#id_LZ_act4,(v_zone).w
0000c32a 6602	bne.s	Card_CheckFZ
0000c32c 7005	moveq	#5,d0
0000c32e 3400	move.w	d0,d2
0000c330 0c780502fe10	cmpi.w	#id_FZ,(v_zone).w
0000c336 6604	bne.s	Card_LoadConfig
0000c338 7006	moveq	#6,d0
0000c33a 740b	moveq	#$B,d2
0000c33c 47f90000c448	lea	(Card_ConData).l,a3
0000c342 e948	lsl.w	#4,d0
0000c344 d6c0	adda.w	d0,a3
0000c346 45f90000c438	lea	(Card_ItemData).l,a2
0000c34c 7203	moveq	#3,d1
0000c354 33530008	move.w	(a3),obX(a1)
0000c358 335b0032	move.w	(a3)+,card_finalX(a1)
0000c35c 335b0030	move.w	(a3)+,card_mainX(a1)
0000c360 335a000a	move.w	(a2)+,obScreenY(a1)
0000c364 135a0024	move.b	(a2)+,obRoutine(a1)
0000c368 101a	move.b	(a2)+,d0
0000c36a 6602	bne.s	Card_ActNumber
0000c36c 1002	move.b	d2,d0
0000c36e 0c000007	cmpi.b	#7,d0
0000c372 660e	bne.s	Card_MakeSprite
0000c374 d038fe11	add.b	(v_act).w,d0
0000c378 0c380003fe11	cmpi.b	#act4,(v_act).w
0000c37e 6602	bne.s	Card_MakeSprite
0000c380 5300	subq.b	#1,d0
0000c382 1340001a	move.b	d0,obFrame(a1)
0000c386 237c0000c9e60004	move.l	#Map_Card,obMap(a1)
0000c38e 337c85800002	move.w	#ArtTile_Title_Card|Tile_Prio,obGfx(a1)
0000c394 137c00780019	move.b	#$78,obActWid(a1)
0000c39a 137c00000001	move.b	#0,obRender(a1)
0000c3a0 137c00000018	move.b	#0,obPriority(a1)
0000c3a6 337c003c001e	move.w	#60,obTimeFrame(a1)
0000c3ac 43e90040	lea	object_size(a1),a1
0000c3b0 51c9ff9c	dbf	d1,Card_Loop
0000c3b4 7210	moveq	#$10,d1
0000c3b6 30280030	move.w	card_mainX(a0),d0
0000c3ba b0680008	cmp.w	obX(a0),d0
0000c3be 6708	beq.s	Card_NoMove
0000c3c0 6c02	bge.s	Card_Move
0000c3c2 4441	neg.w	d1
0000c3c4 d3680008	add.w	d1,obX(a0)
0000c3c8 30280008	move.w	obX(a0),d0
0000c3cc 6b0a	bmi.s	locret_C3D8
0000c3ce 0c400200	cmpi.w	#$200,d0
0000c3d2 6404	bhs.s	locret_C3D8
0000c3d4 6000122e	bra.w	DisplaySprite
0000c3d8 4e75	rts	
0000c3da 4a68001e	tst.w	obTimeFrame(a0)
0000c3de 6708	beq.s	Card_ChkPos2
0000c3e0 5368001e	subq.w	#1,obTimeFrame(a0)
0000c3e4 6000121e	bra.w	DisplaySprite
0000c3e8 4a280001	tst.b	obRender(a0)
0000c3ec 6a26	bpl.s	Card_ChangeArt
0000c3ee 7220	moveq	#$20,d1
0000c3f0 30280032	move.w	card_finalX(a0),d0
0000c3f4 b0680008	cmp.w	obX(a0),d0
0000c3f8 671a	beq.s	Card_ChangeArt
0000c3fa 6c02	bge.s	Card_Move2
0000c3fc 4441	neg.w	d1
0000c3fe d3680008	add.w	d1,obX(a0)
0000c402 30280008	move.w	obX(a0),d0
0000c406 6b0a	bmi.s	locret_C412
0000c408 0c400200	cmpi.w	#$200,d0
0000c40c 6404	bhs.s	locret_C412
0000c40e 600011f4	bra.w	DisplaySprite
0000c412 4e75	rts	
0000c414 0c2800040024	cmpi.b	#4,obRoutine(a0)
0000c41a 6618	bne.s	Card_Delete
0000c41c 7002	moveq	#plcid_Explode,d0
0000c41e 4eb900001580	jsr	(AddPLC).l
0000c424 7000	moveq	#0,d0
0000c426 1038fe10	move.b	(v_zone).w,d0
0000c42a 06400015	addi.w	#plcid_GHZAnimals,d0
0000c42e 4eb900001580	jsr	(AddPLC).l
0000c434 6000120a	bra.w	DeleteObject
0000c4b8 7000	moveq	#0,d0
0000c4ba 10280024	move.b	obRoutine(a0),d0
0000c4be 323b0006	move.w	Over_Index(pc,d0.w),d1
0000c4c2 4efb1002	jmp	Over_Index(pc,d1.w)
0000c4cc 4ab8f680	tst.l	(v_plc_buffer).w
0000c4d0 6702	beq.s	Over_Main
0000c4d2 4e75	rts	
0000c4d4 54280024	addq.b	#2,obRoutine(a0)
0000c4d8 317c00500008	move.w	#$50,obX(a0)
0000c4de 08280000001a	btst	#0,obFrame(a0)
0000c4e4 6706	beq.s	Over_1stWord
0000c4e6 317c01f00008	move.w	#$1F0,obX(a0)
0000c4ec 317c00f0000a	move.w	#$F0,obScreenY(a0)
0000c4f2 217c0000cba40004	move.l	#Map_Over,obMap(a0)
0000c4fa 317c855e0002	move.w	#ArtTile_Game_Over|Tile_Prio,obGfx(a0)
0000c500 117c00000001	move.b	#0,obRender(a0)
0000c506 117c00000018	move.b	#0,obPriority(a0)
0000c50c 7210	moveq	#$10,d1
0000c50e 0c6801200008	cmpi.w	#$120,obX(a0)
0000c514 670c	beq.s	Over_SetWait
0000c516 6502	bcs.s	Over_UpdatePos
0000c518 4441	neg.w	d1
0000c51a d3680008	add.w	d1,obX(a0)
0000c51e 600010e4	bra.w	DisplaySprite
0000c522 317c02d0001e	move.w	#720,obTimeFrame(a0)
0000c528 54280024	addq.b	#2,obRoutine(a0)
0000c52c 4e75	rts	
0000c52e 1038f605	move.b	(v_jpadpress1).w,d0
0000c532 02000070	andi.b	#btnABC,d0
0000c536 6616	bne.s	Over_ChgMode
0000c538 08280000001a	btst	#0,obFrame(a0)
0000c53e 662e	bne.s	Over_Display
0000c540 4a68001e	tst.w	obTimeFrame(a0)
0000c544 6708	beq.s	Over_ChgMode
0000c546 5368001e	subq.w	#1,obTimeFrame(a0)
0000c54a 600010b8	bra.w	DisplaySprite
0000c54e 4a38fe1a	tst.b	(f_timeover).w
0000c552 6614	bne.s	Over_ResetLvl
0000c554 11fc0014f600	move.b	#id_Continue,(v_gamemode).w
0000c55a 4a38fe18	tst.b	(v_continues).w
0000c55e 660e	bne.s	Over_Display
0000c560 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
0000c566 6006	bra.s	Over_Display
0000c568 31fc0001fe02	move.w	#1,(f_restart).w
0000c56e 60001094	bra.w	DisplaySprite
0000c572 7000	moveq	#0,d0
0000c574 10280024	move.b	obRoutine(a0),d0
0000c578 323b0006	move.w	Got_Index(pc,d0.w),d1
0000c57c 4efb1002	jmp	Got_Index(pc,d1.w)
0000c592 4ab8f680	tst.l	(v_plc_buffer).w
0000c596 6702	beq.s	Got_Main
0000c598 4e75	rts	
0000c59a 2248	movea.l	a0,a1
0000c59c 45f90000c776	lea	(Got_Config).l,a2
0000c5a2 7206	moveq	#6,d1
0000c5aa 33520008	move.w	(a2),obX(a1)
0000c5ae 335a0032	move.w	(a2)+,got_finalX(a1)
0000c5b2 335a0030	move.w	(a2)+,got_mainX(a1)
0000c5b6 335a000a	move.w	(a2)+,obScreenY(a1)
0000c5ba 135a0024	move.b	(a2)+,obRoutine(a1)
0000c5be 101a	move.b	(a2)+,d0
0000c5c0 0c000006	cmpi.b	#6,d0
0000c5c4 6604	bne.s	loc_C5CA
0000c5c6 d038fe11	add.b	(v_act).w,d0
0000c5ca 1340001a	move.b	d0,obFrame(a1)
0000c5ce 237c0000cbd80004	move.l	#Map_Got,obMap(a1)
0000c5d6 337c85800002	move.w	#ArtTile_Title_Card|Tile_Prio,obGfx(a1)
0000c5dc 137c00000001	move.b	#0,obRender(a1)
0000c5e2 43e90040	lea	object_size(a1),a1
0000c5e6 51c9ffbc	dbf	d1,Got_Loop
0000c5ea 7210	moveq	#$10,d1
0000c5ec 30280030	move.w	got_mainX(a0),d0
0000c5f0 b0680008	cmp.w	obX(a0),d0
0000c5f4 6724	beq.s	loc_C61A
0000c5f6 6c02	bge.s	Got_ChgPos
0000c5f8 4441	neg.w	d1
0000c5fa d3680008	add.w	d1,obX(a0)
0000c5fe 30280008	move.w	obX(a0),d0
0000c602 6b0a	bmi.s	locret_C60E
0000c604 0c400200	cmpi.w	#$200,d0
0000c608 6404	bhs.s	locret_C60E
0000c60a 60000ff8	bra.w	DisplaySprite
0000c60e 4e75	rts	
0000c610 117c000e0024	move.b	#$E,obRoutine(a0)
0000c616 6000010c	bra.w	Got_MoveBack
0000c61a 0c38000ed724	cmpi.b	#$E,(v_endcardring+obRoutine).w
0000c620 67ee	beq.s	loc_C610
0000c622 0c280004001a	cmpi.b	#4,obFrame(a0)
0000c628 66d4	bne.s	loc_C5FE
0000c62a 54280024	addq.b	#2,obRoutine(a0)
0000c62e 317c00b4001e	move.w	#180,obTimeFrame(a0)
0000c634 5368001e	subq.w	#1,obTimeFrame(a0)
0000c638 6604	bne.s	Got_Display
0000c63a 54280024	addq.b	#2,obRoutine(a0)
0000c63e 60000fc4	bra.w	DisplaySprite
0000c642 61000fc0	bsr.w	DisplaySprite
0000c646 11fc0001f7d6	move.b	#1,(f_endactbonus).w
0000c64c 7000	moveq	#0,d0
0000c64e 4a78f7d2	tst.w	(v_timebonus).w
0000c652 670a	beq.s	Got_RingBonus
0000c654 0640000a	addi.w	#10,d0
0000c658 0478000af7d2	subi.w	#10,(v_timebonus).w
0000c65e 4a78f7d4	tst.w	(v_ringbonus).w
0000c662 670a	beq.s	Got_ChkBonus
0000c664 0640000a	addi.w	#10,d0
0000c668 0478000af7d4	subi.w	#10,(v_ringbonus).w
0000c66e 4a40	tst.w	d0
0000c670 6622	bne.s	Got_AddBonus
0000c672 303c00c5	move.w	#sfx_Cash,d0
0000c676 4eb90000139c	jsr	(QueueSound2).l
0000c67c 54280024	addq.b	#2,obRoutine(a0)
0000c680 0c780501fe10	cmpi.w	#id_SBZ_act2,(v_zone).w
0000c686 6604	bne.s	Got_SetDelay
0000c688 58280024	addq.b	#4,obRoutine(a0)
0000c68c 317c00b4001e	move.w	#180,obTimeFrame(a0)
0000c692 4e75	rts	
0000c694 4eb90001c68c	jsr	(AddPoints).l
0000c69a 1038fe0f	move.b	(v_vblank_byte).w,d0
0000c69e 02000003	andi.b	#3,d0
0000c6a2 66ee	bne.s	locret_C692
0000c6a4 303c00cd	move.w	#sfx_Switch,d0
0000c6a8 4ef90000139c	jmp	(QueueSound2).l
0000c6ae 1038fe10	move.b	(v_zone).w,d0
0000c6b2 02400007	andi.w	#7,d0
0000c6b6 e748	lsl.w	#3,d0
0000c6b8 1238fe11	move.b	(v_act).w,d1
0000c6bc 02410003	andi.w	#3,d1
0000c6c0 d241	add.w	d1,d1
0000c6c2 d041	add.w	d1,d0
0000c6c4 303b002e	move.w	LevelOrder(pc,d0.w),d0
0000c6c8 31c0fe10	move.w	d0,(v_zone).w
0000c6cc 4a40	tst.w	d0
0000c6ce 6608	bne.s	Got_ChkSS
0000c6d0 11fc0000f600	move.b	#id_Sega,(v_gamemode).w
0000c6d6 6018	bra.s	Got_Display2
0000c6d8 4238fe30	clr.b	(v_lastlamp).w
0000c6dc 4a38f7cd	tst.b	(f_bigring).w
0000c6e0 6708	beq.s	loc_C6EA
0000c6e2 11fc0010f600	move.b	#id_Special,(v_gamemode).w
0000c6e8 6006	bra.s	Got_Display2
0000c6ea 31fc0001fe02	move.w	#1,(f_restart).w
0000c6f0 60000f12	bra.w	DisplaySprite
0000c724 7220	moveq	#$20,d1
0000c726 30280032	move.w	got_finalX(a0),d0
0000c72a b0680008	cmp.w	obX(a0),d0
0000c72e 671a	beq.s	Got_SBZ2
0000c730 6c02	bge.s	Got_ChgPos2
0000c732 4441	neg.w	d1
0000c734 d3680008	add.w	d1,obX(a0)
0000c738 30280008	move.w	obX(a0),d0
0000c73c 6b0a	bmi.s	locret_C748
0000c73e 0c400200	cmpi.w	#$200,d0
0000c742 6404	bhs.s	locret_C748
0000c744 60000ebe	bra.w	DisplaySprite
0000c748 4e75	rts	
0000c74a 0c280004001a	cmpi.b	#4,obFrame(a0)
0000c750 66000eee	bne.w	DeleteObject
0000c754 54280024	addq.b	#2,obRoutine(a0)
0000c758 4238f7cc	clr.b	(f_lockctrl).w
0000c75c 303c008d	move.w	#bgm_FZ,d0
0000c760 4ef900001396	jmp	(QueueSound1).l
0000c766 5478f72a	addq.w	#2,(v_limitright2).w
0000c76a 0c782100f72a	cmpi.w	#$2100,(v_limitright2).w
0000c770 67000ece	beq.w	DeleteObject
0000c774 4e75	rts	
0000c7ae 7000	moveq	#0,d0
0000c7b0 10280024	move.b	obRoutine(a0),d0
0000c7b4 323b0006	move.w	SSR_Index(pc,d0.w),d1
0000c7b8 4efb1002	jmp	SSR_Index(pc,d1.w)
0000c7d2 4ab8f680	tst.l	(v_plc_buffer).w
0000c7d6 6702	beq.s	SSR_Main
0000c7d8 4e75	rts	
0000c7da 2248	movea.l	a0,a1
0000c7dc 45f90000c92e	lea	(SSR_Config).l,a2
0000c7e2 7203	moveq	#3,d1
0000c7e4 0c780032fe20	cmpi.w	#50,(v_rings).w
0000c7ea 6502	blo.s	SSR_Loop
0000c7ec 5241	addq.w	#1,d1
0000c7f4 335a0008	move.w	(a2)+,obX(a1)
0000c7f8 335a0030	move.w	(a2)+,ssr_mainX(a1)
0000c7fc 335a000a	move.w	(a2)+,obScreenY(a1)
0000c800 135a0024	move.b	(a2)+,obRoutine(a1)
0000c804 135a001a	move.b	(a2)+,obFrame(a1)
0000c808 237c0000cc9a0004	move.l	#Map_SSR,obMap(a1)
0000c810 337c85800002	move.w	#ArtTile_Title_Card|Tile_Prio,obGfx(a1)
0000c816 137c00000001	move.b	#0,obRender(a1)
0000c81c 43e90040	lea	object_size(a1),a1
0000c820 51c9ffcc	dbf	d1,SSR_Loop
0000c824 7007	moveq	#7,d0
0000c826 1238fe57	move.b	(v_emeralds).w,d1
0000c82a 6716	beq.s	loc_C842
0000c82c 7000	moveq	#0,d0
0000c82e 0c010006	cmpi.b	#6,d1
0000c832 660e	bne.s	loc_C842
0000c834 7008	moveq	#8,d0
0000c836 317c00180008	move.w	#$18,obX(a0)
0000c83c 317c01180030	move.w	#$118,ssr_mainX(a0)
0000c842 1140001a	move.b	d0,obFrame(a0)
0000c846 7210	moveq	#$10,d1
0000c848 30280030	move.w	ssr_mainX(a0),d0
0000c84c b0680008	cmp.w	obX(a0),d0
0000c850 671a	beq.s	loc_C86C
0000c852 6c02	bge.s	SSR_ChgPos
0000c854 4441	neg.w	d1
0000c856 d3680008	add.w	d1,obX(a0)
0000c85a 30280008	move.w	obX(a0),d0
0000c85e 6b0a	bmi.s	locret_C86A
0000c860 0c400200	cmpi.w	#$200,d0
0000c864 6404	bhs.s	locret_C86A
0000c866 60000d9c	bra.w	DisplaySprite
0000c86a 4e75	rts	
0000c86c 0c280002001a	cmpi.b	#2,obFrame(a0)
0000c872 66e6	bne.s	loc_C85A
0000c874 54280024	addq.b	#2,obRoutine(a0)
0000c878 317c00b4001e	move.w	#180,obTimeFrame(a0)
0000c87e 11fc007fd800	move.b	#id_SSRChaos,(v_ssresemeralds).w
0000c884 5368001e	subq.w	#1,obTimeFrame(a0)
0000c888 6604	bne.s	SSR_Display
0000c88a 54280024	addq.b	#2,obRoutine(a0)
0000c88e 60000d74	bra.w	DisplaySprite
0000c892 61000d70	bsr.w	DisplaySprite
0000c896 11fc0001f7d6	move.b	#1,(f_endactbonus).w
0000c89c 4a78f7d4	tst.w	(v_ringbonus).w
0000c8a0 6722	beq.s	loc_C8C4
0000c8a2 0478000af7d4	subi.w	#10,(v_ringbonus).w
0000c8a8 700a	moveq	#10,d0
0000c8aa 4eb90001c68c	jsr	(AddPoints).l
0000c8b0 1038fe0f	move.b	(v_vblank_byte).w,d0
0000c8b4 02000003	andi.b	#3,d0
0000c8b8 6630	bne.s	locret_C8EA
0000c8ba 303c00cd	move.w	#sfx_Switch,d0
0000c8be 4ef90000139c	jmp	(QueueSound2).l
0000c8c4 303c00c5	move.w	#sfx_Cash,d0
0000c8c8 4eb90000139c	jsr	(QueueSound2).l
0000c8ce 54280024	addq.b	#2,obRoutine(a0)
0000c8d2 317c00b4001e	move.w	#180,obTimeFrame(a0)
0000c8d8 0c780032fe20	cmpi.w	#50,(v_rings).w
0000c8de 650a	blo.s	locret_C8EA
0000c8e0 317c003c001e	move.w	#60,obTimeFrame(a0)
0000c8e6 58280024	addq.b	#4,obRoutine(a0)
0000c8ea 4e75	rts	
0000c8ec 31fc0001fe02	move.w	#1,(f_restart).w
0000c8f2 60000d10	bra.w	DisplaySprite
0000c8f6 11fc0004d6da	move.b	#4,(v_ssrescontinue+obFrame).w
0000c8fc 11fc0014d6e4	move.b	#$14,(v_ssrescontinue+obRoutine).w
0000c902 303c00bf	move.w	#sfx_Continue,d0
0000c906 4eb90000139c	jsr	(QueueSound2).l
0000c90c 54280024	addq.b	#2,obRoutine(a0)
0000c910 317c0168001e	move.w	#360,obTimeFrame(a0)
0000c916 60000cec	bra.w	DisplaySprite
0000c91a 1038fe0f	move.b	(v_vblank_byte).w,d0
0000c91e 0200000f	andi.b	#$F,d0
0000c922 6606	bne.s	SSR_Display2
0000c924 08680000001a	bchg	#0,obFrame(a0)
0000c92a 60000cd8	bra.w	DisplaySprite
0000c956 7000	moveq	#0,d0
0000c958 10280024	move.b	obRoutine(a0),d0
0000c95c 323b0006	move.w	SSRC_Index(pc,d0.w),d1
0000c960 4efb1002	jmp	SSRC_Index(pc,d1.w)
0000c974 2248	movea.l	a0,a1
0000c976 45f90000c968	lea	(SSRC_PosData).l,a2
0000c97c 7400	moveq	#0,d2
0000c97e 7200	moveq	#0,d1
0000c980 1238fe57	move.b	(v_emeralds).w,d1
0000c984 5301	subq.b	#1,d1
0000c986 65000cb8	bcs.w	DeleteObject
0000c990 335a0008	move.w	(a2)+,obX(a1)
0000c994 337c00f0000a	move.w	#$F0,obScreenY(a1)
0000c99a 47f8fe58	lea	(v_emldlist).w,a3
0000c99e 16332000	move.b	(a3,d2.w),d3
0000c9a2 1343001a	move.b	d3,obFrame(a1)
0000c9a6 1343001c	move.b	d3,obAnim(a1)
0000c9aa 5202	addq.b	#1,d2
0000c9ac 54290024	addq.b	#2,obRoutine(a1)
0000c9b0 237c0000cdf40004	move.l	#Map_SSRC,obMap(a1)
0000c9b8 337c85410002	move.w	#ArtTile_SS_Results_Emeralds|Tile_Prio,obGfx(a1)
0000c9be 137c00000001	move.b	#0,obRender(a1)
0000c9c4 43e90040	lea	object_size(a1),a1
0000c9c8 51c9ffc0	dbf	d1,SSRC_Loop
0000c9cc 1028001a	move.b	obFrame(a0),d0
0000c9d0 117c0006001a	move.b	#6,obFrame(a0)
0000c9d6 0c000006	cmpi.b	#6,d0
0000c9da 6606	bne.s	SSRC_Display
0000c9dc 1168001c001a	move.b	obAnim(a0),obFrame(a0)
0000c9e2 60000c20	bra.w	DisplaySprite
0000ce28 7000	moveq	#0,d0
0000ce2a 10280024	move.b	obRoutine(a0),d0
0000ce2e 323b0006	move.w	Spik_Index(pc,d0.w),d1
0000ce32 4efb1002	jmp	Spik_Index(pc,d1.w)
0000ce46 54280024	addq.b	#2,obRoutine(a0)
0000ce4a 217c0000cfe80004	move.l	#Map_Spike,obMap(a0)
0000ce52 317c051b0002	move.w	#ArtTile_Spikes,obGfx(a0)
0000ce58 002800040001	ori.b	#4,obRender(a0)
0000ce5e 117c00040018	move.b	#4,obPriority(a0)
0000ce64 10280028	move.b	obSubtype(a0),d0
0000ce68 0228000f0028	andi.b	#$F,obSubtype(a0)
0000ce6e 024000f0	andi.w	#$F0,d0
0000ce72 43f90000ce3a	lea	(Spik_Var).l,a1
0000ce78 e648	lsr.w	#3,d0
0000ce7a d2c0	adda.w	d0,a1
0000ce7c 1159001a	move.b	(a1)+,obFrame(a0)
0000ce80 11590019	move.b	(a1)+,obActWid(a0)
0000ce84 316800080030	move.w	obX(a0),spik_origX(a0)
0000ce8a 3168000c0032	move.w	obY(a0),spik_origY(a0)
0000ce90 610000b4	bsr.w	Spik_Type0x
0000ce94 343c0004	move.w	#4,d2
0000ce98 0c280005001a	cmpi.b	#5,obFrame(a0)
0000ce9e 670c	beq.s	Spik_SideWays
0000cea0 0c280001001a	cmpi.b	#1,obFrame(a0)
0000cea6 6624	bne.s	Spik_Upright
0000cea8 343c0014	move.w	#$14,d2
0000ceac 323c001b	move.w	#$1B,d1
0000ceb0 3602	move.w	d2,d3
0000ceb2 5243	addq.w	#1,d3
0000ceb4 38280008	move.w	obX(a0),d4
0000ceb8 61002b1c	bsr.w	SolidObject
0000cebc 082800030022	btst	#3,obStatus(a0)
0000cec2 665e	bne.s	Spik_Display
0000cec4 0c440001	cmpi.w	#1,d4
0000cec8 6728	beq.s	Spik_Hurt
0000ceca 6056	bra.s	Spik_Display
0000cecc 7200	moveq	#0,d1
0000cece 12280019	move.b	obActWid(a0),d1
0000ced2 0641000b	addi.w	#$B,d1
0000ced6 343c0010	move.w	#$10,d2
0000ceda 363c0011	move.w	#$11,d3
0000cede 38280008	move.w	obX(a0),d4
0000cee2 61002af2	bsr.w	SolidObject
0000cee6 082800030022	btst	#3,obStatus(a0)
0000ceec 6604	bne.s	Spik_Hurt
0000ceee 4a44	tst.w	d4
0000cef0 6a30	bpl.s	Spik_Display
0000cef2 4a38fe2d	tst.b	(v_invinc).w
0000cef6 662a	bne.s	Spik_Display
0000cef8 2f08	move.l	a0,-(sp)
0000cefa 2448	movea.l	a0,a2
0000cefc 41f8d000	lea	(v_player).w,a0
0000cf00 0c2800040024	cmpi.b	#4,obRoutine(a0)
0000cf06 6418	bhs.s	loc_CF20
0000cf08 2628000c	move.l	obY(a0),d3
0000cf0c 30280012	move.w	obVelY(a0),d0
0000cf10 48c0	ext.l	d0
0000cf12 e180	asl.l	#8,d0
0000cf14 9680	sub.l	d0,d3
0000cf16 2143000c	move.l	d3,obY(a0)
0000cf1a 4eb90001aff4	jsr	(HurtSonic).l
0000cf20 205f	movea.l	(sp)+,a0
0000cf22 610006e0	bsr.w	DisplaySprite
0000cf26 30280030	move.w	spik_origX(a0),d0
0000cf2a 0240ff80	andi.w	#$FF80,d0
0000cf2e 3238f700	move.w	(v_screenposx).w,d1
0000cf32 04410080	subi.w	#128,d1
0000cf36 0241ff80	andi.w	#$FF80,d1
0000cf3a 9041	sub.w	d1,d0
0000cf3c 0c400280	cmpi.w	#128+320+192,d0
0000cf40 620006fe	bhi.w	DeleteObject
0000cf44 4e75	rts	
0000cf46 7000	moveq	#0,d0
0000cf48 10280028	move.b	obSubtype(a0),d0
0000cf4c d040	add.w	d0,d0
0000cf4e 323b0006	move.w	Spik_TypeIndex(pc,d0.w),d1
0000cf52 4efb1002	jmp	Spik_TypeIndex(pc,d1.w)
0000cf5c 4e75	rts	
0000cf5e 61000026	bsr.w	Spik_Wait
0000cf62 7000	moveq	#0,d0
0000cf64 10280034	move.b	objoff_34(a0),d0
0000cf68 d0680032	add.w	spik_origY(a0),d0
0000cf6c 3140000c	move.w	d0,obY(a0)
0000cf70 4e75	rts	
0000cf72 61000012	bsr.w	Spik_Wait
0000cf76 7000	moveq	#0,d0
0000cf78 10280034	move.b	objoff_34(a0),d0
0000cf7c d0680030	add.w	spik_origX(a0),d0
0000cf80 31400008	move.w	d0,obX(a0)
0000cf84 4e75	rts	
0000cf86 4a680038	tst.w	objoff_38(a0)
0000cf8a 6718	beq.s	loc_CFA4
0000cf8c 53680038	subq.w	#1,objoff_38(a0)
0000cf90 6654	bne.s	locret_CFE6
0000cf92 4a280001	tst.b	obRender(a0)
0000cf96 6a4e	bpl.s	locret_CFE6
0000cf98 303c00b6	move.w	#sfx_SpikesMove,d0
0000cf9c 4eb90000139c	jsr	(QueueSound2).l
0000cfa2 6042	bra.s	locret_CFE6
0000cfa4 4a680036	tst.w	objoff_36(a0)
0000cfa8 671c	beq.s	loc_CFC6
0000cfaa 046808000034	subi.w	#$800,objoff_34(a0)
0000cfb0 6434	bcc.s	locret_CFE6
0000cfb2 317c00000034	move.w	#0,objoff_34(a0)
0000cfb8 317c00000036	move.w	#0,objoff_36(a0)
0000cfbe 317c003c0038	move.w	#60,objoff_38(a0)
0000cfc4 6020	bra.s	locret_CFE6
0000cfc6 066808000034	addi.w	#$800,objoff_34(a0)
0000cfcc 0c6820000034	cmpi.w	#$2000,objoff_34(a0)
0000cfd2 6512	blo.s	locret_CFE6
0000cfd4 317c20000034	move.w	#$2000,objoff_34(a0)
0000cfda 317c00010036	move.w	#1,objoff_36(a0)
0000cfe0 317c003c0038	move.w	#60,objoff_38(a0)
0000cfe6 4e75	rts	
0000d050 7000	moveq	#0,d0
0000d052 10280024	move.b	obRoutine(a0),d0
0000d056 323b0006	move.w	Rock_Index(pc,d0.w),d1
0000d05a 4efb1002	jmp	Rock_Index(pc,d1.w)
0000d062 54280024	addq.b	#2,obRoutine(a0)
0000d066 217c0000d10e0004	move.l	#Map_PRock,obMap(a0)
0000d06e 317c63d00002	move.w	#ArtTile_GHZ_Purple_Rock|Tile_Pal4,obGfx(a0)
0000d074 117c00040001	move.b	#4,obRender(a0)
0000d07a 117c00130019	move.b	#$13,obActWid(a0)
0000d080 117c00040018	move.b	#4,obPriority(a0)
0000d086 323c001b	move.w	#$1B,d1
0000d08a 343c0010	move.w	#$10,d2
0000d08e 363c0010	move.w	#$10,d3
0000d092 38280008	move.w	obX(a0),d4
0000d096 6100293e	bsr.w	SolidObject
0000d09a 61000568	bsr.w	DisplaySprite
0000d09e 30280008	move.w	obX(a0),d0
0000d0a2 0240ff80	andi.w	#$FF80,d0
0000d0a6 3238f700	move.w	(v_screenposx).w,d1
0000d0aa 04410080	subi.w	#128,d1
0000d0ae 0241ff80	andi.w	#$FF80,d1
0000d0b2 9041	sub.w	d1,d0
0000d0b4 0c400280	cmpi.w	#128+320+192,d0
0000d0b8 62000586	bhi.w	DeleteObject
0000d0bc 4e75	rts	
0000d0be 7000	moveq	#0,d0
0000d0c0 10280024	move.b	obRoutine(a0),d0
0000d0c4 323b0006	move.w	WSnd_Index(pc,d0.w),d1
0000d0c8 4efb1002	jmp	WSnd_Index(pc,d1.w)
0000d0d0 54280024	addq.b	#2,obRoutine(a0)
0000d0d4 117c00040001	move.b	#4,obRender(a0)
0000d0da 1038fe0f	move.b	(v_vblank_byte).w,d0
0000d0de 0200003f	andi.b	#$3F,d0
0000d0e2 660a	bne.s	WSnd_ChkDel
0000d0e4 303c00d0	move.w	#sfx_Waterfall,d0
0000d0e8 4eb90000139c	jsr	(QueueSound2).l
0000d0ee 30280008	move.w	obX(a0),d0
0000d0f2 0240ff80	andi.w	#$FF80,d0
0000d0f6 3238f700	move.w	(v_screenposx).w,d1
0000d0fa 04410080	subi.w	#128,d1
0000d0fe 0241ff80	andi.w	#$FF80,d1
0000d102 9041	sub.w	d1,d0
0000d104 0c400280	cmpi.w	#128+320+192,d0
0000d108 62000536	bhi.w	DeleteObject
0000d10c 4e75	rts	
0000d11c 7000	moveq	#0,d0
0000d11e 10280024	move.b	obRoutine(a0),d0
0000d122 323b000a	move.w	Smash_Index(pc,d0.w),d1
0000d126 4ebb1006	jsr	Smash_Index(pc,d1.w)
0000d12a 60002580	bra.w	RememberState
0000d134 54280024	addq.b	#2,obRoutine(a0)
0000d138 217c0000d2b60004	move.l	#Map_Smash,obMap(a0)
0000d140 317c450f0002	move.w	#ArtTile_GHZ_SLZ_Smashable_Wall|Tile_Pal3,obGfx(a0)
0000d146 117c00040001	move.b	#4,obRender(a0)
0000d14c 117c00100019	move.b	#$10,obActWid(a0)
0000d152 117c00040018	move.b	#4,obPriority(a0)
0000d158 11680028001a	move.b	obSubtype(a0),obFrame(a0)
0000d15e 3178d0100030	move.w	(v_player+obVelX).w,smash_speed(a0)
0000d164 323c001b	move.w	#$1B,d1
0000d168 343c0020	move.w	#$20,d2
0000d16c 363c0020	move.w	#$20,d3
0000d170 38280008	move.w	obX(a0),d4
0000d174 61002860	bsr.w	SolidObject
0000d178 082800050022	btst	#5,obStatus(a0)
0000d17e 6602	bne.s	.chkroll
0000d180 4e75	rts	
0000d182 0c290002001c	cmpi.b	#id_Roll,obAnim(a1)
0000d188 66f6	bne.s	.donothing
0000d18a 30280030	move.w	smash_speed(a0),d0
0000d18e 6a02	bpl.s	.chkspeed
0000d190 4440	neg.w	d0
0000d192 0c400480	cmpi.w	#$480,d0
0000d196 65e8	blo.s	.donothing
0000d198 336800300010	move.w	smash_speed(a0),obVelX(a1)
0000d19e 58690008	addq.w	#4,obX(a1)
0000d1a2 49f90000d276	lea	(Smash_FragSpd1).l,a4
0000d1a8 30280008	move.w	obX(a0),d0
0000d1ac b0690008	cmp.w	obX(a1),d0
0000d1b0 650a	blo.s	.smash
0000d1b2 51690008	subq.w	#8,obX(a1)
0000d1b6 49f90000d296	lea	(Smash_FragSpd2).l,a4
0000d1bc 336900100014	move.w	obVelX(a1),obInertia(a1)
0000d1c2 08a800050022	bclr	#5,obStatus(a0)
0000d1c8 08a900050022	bclr	#5,obStatus(a1)
0000d1ce 7207	moveq	#7,d1
0000d1d0 343c0070	move.w	#$70,d2
0000d1d4 6118	bsr.s	SmashObject
0000d1d6 61000406	bsr.w	SpeedToPos
0000d1da 066800700012	addi.w	#$70,obVelY(a0)
0000d1e0 61000422	bsr.w	DisplaySprite
0000d1e4 4a280001	tst.b	obRender(a0)
0000d1e8 6a000456	bpl.w	DeleteObject
0000d1ec 4e75	rts	
0000d1ee 7000	moveq	#0,d0
0000d1f0 1028001a	move.b	obFrame(a0),d0
0000d1f4 d040	add.w	d0,d0
0000d1f6 26680004	movea.l	obMap(a0),a3
0000d1fa d6f30000	adda.w	(a3,d0.w),a3
0000d1fe 524b	addq.w	#1,a3
0000d200 08e800050001	bset	#5,obRender(a0)
0000d20a 1a280001	move.b	obRender(a0),d5
0000d20e 2248	movea.l	a0,a1
0000d210 6008	bra.s	.loadfrag
0000d212 61000878	bsr.w	FindFreeObj
0000d216 6654	bne.s	.playsnd
0000d218 5a4b	addq.w	#5,a3
0000d21a 137c00040024	move.b	#4,obRoutine(a1)
0000d224 234b0004	move.l	a3,obMap(a1)
0000d228 13450001	move.b	d5,obRender(a1)
0000d22c 336800080008	move.w	obX(a0),obX(a1)
0000d232 3368000c000c	move.w	obY(a0),obY(a1)
0000d238 336800020002	move.w	obGfx(a0),obGfx(a1)
0000d23e 136800180018	move.b	obPriority(a0),obPriority(a1)
0000d244 136800190019	move.b	obActWid(a0),obActWid(a1)
0000d24a 335c0010	move.w	(a4)+,obVelX(a1)
0000d24e 335c0012	move.w	(a4)+,obVelY(a1)
0000d252 b3c8	cmpa.l	a0,a1
0000d254 6412	bhs.s	.loc_D268
0000d256 2f08	move.l	a0,-(sp)
0000d258 2049	movea.l	a1,a0
0000d25a 61000382	bsr.w	SpeedToPos
0000d25e d5680012	add.w	d2,obVelY(a0)
0000d262 205f	movea.l	(sp)+,a0
0000d264 610003bc	bsr.w	DisplaySprite2
0000d268 51c9ffa8	dbf	d1,.loop
0000d26c 303c00cb	move.w	#sfx_WallSmash,d0
0000d270 4ef90000139c	jmp	(QueueSound2).l
0000d338 41f8d000	lea	(v_objspace).w,a0
0000d33c 7e7f	moveq	#(v_objspace_end-v_objspace)/object_size-1,d7
0000d33e 7000	moveq	#0,d0
0000d340 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
0000d346 641a	bhs.s	loc_D362
0000d348 1010	move.b	obID(a0),d0
0000d34a 670c	beq.s	loc_D358
0000d34c d040	add.w	d0,d0
0000d34e d040	add.w	d0,d0
0000d350 227b002c	movea.l	Obj_Index-4(pc,d0.w),a1
0000d354 4e91	jsr	(a1)
0000d356 7000	moveq	#0,d0
0000d358 41e80040	lea	object_size(a0),a0
0000d35c 51cfffea	dbf	d7,loc_D348
0000d360 4e75	rts	
0000d362 7e1f	moveq	#(v_lvlobjspace-v_objspace)/object_size-1,d7
0000d364 61e2	bsr.s	loc_D348
0000d366 7e5f	moveq	#(v_lvlobjend-v_lvlobjspace)/object_size-1,d7
0000d368 7000	moveq	#0,d0
0000d36a 1010	move.b	obID(a0),d0
0000d36c 670a	beq.s	loc_D378
0000d36e 4a280001	tst.b	obRender(a0)
0000d372 6a04	bpl.s	loc_D378
0000d374 6100028e	bsr.w	DisplaySprite
0000d378 41e80040	lea	object_size(a0),a0
0000d37c 51cfffea	dbf	d7,loc_D368
0000d380 4e75	rts	
0000d5b2 24280008	move.l	obX(a0),d2
0000d5b6 2628000c	move.l	obY(a0),d3
0000d5ba 30280010	move.w	obVelX(a0),d0
0000d5be 48c0	ext.l	d0
0000d5c0 e180	asl.l	#8,d0
0000d5c2 d480	add.l	d0,d2
0000d5c4 30280012	move.w	obVelY(a0),d0
0000d5c8 066800380012	addi.w	#$38,obVelY(a0)
0000d5ce 48c0	ext.l	d0
0000d5d0 e180	asl.l	#8,d0
0000d5d2 d680	add.l	d0,d3
0000d5d4 21420008	move.l	d2,obX(a0)
0000d5d8 2143000c	move.l	d3,obY(a0)
0000d5dc 4e75	rts	
0000d5de 24280008	move.l	obX(a0),d2
0000d5e2 2628000c	move.l	obY(a0),d3
0000d5e6 30280010	move.w	obVelX(a0),d0
0000d5ea 48c0	ext.l	d0
0000d5ec e180	asl.l	#8,d0
0000d5ee d480	add.l	d0,d2
0000d5f0 30280012	move.w	obVelY(a0),d0
0000d5f4 48c0	ext.l	d0
0000d5f6 e180	asl.l	#8,d0
0000d5f8 d680	add.l	d0,d3
0000d5fa 21420008	move.l	d2,obX(a0)
0000d5fe 2143000c	move.l	d3,obY(a0)
0000d602 4e75	rts	
0000d604 43f8ac00	lea	(v_spritequeue).w,a1
0000d608 30280018	move.w	obPriority(a0),d0
0000d60c e248	lsr.w	#1,d0
0000d60e 02400380	andi.w	#$380,d0
0000d612 d2c0	adda.w	d0,a1
0000d614 0c51007e	cmpi.w	#$7E,(a1)
0000d618 6406	bhs.s	DSpr_Full
0000d61a 5451	addq.w	#2,(a1)
0000d61c d2d1	adda.w	(a1),a1
0000d61e 3288	move.w	a0,(a1)
0000d620 4e75	rts	
0000d622 45f8ac00	lea	(v_spritequeue).w,a2
0000d626 30290018	move.w	obPriority(a1),d0
0000d62a e248	lsr.w	#1,d0
0000d62c 02400380	andi.w	#$380,d0
0000d630 d4c0	adda.w	d0,a2
0000d632 0c52007e	cmpi.w	#$7E,(a2)
0000d636 6406	bhs.s	DSpr2_Full
0000d638 5452	addq.w	#2,(a2)
0000d63a d4d2	adda.w	(a2),a2
0000d63c 3489	move.w	a1,(a2)
0000d63e 4e75	rts	
0000d640 2248	movea.l	a0,a1
0000d642 7200	moveq	#0,d1
0000d644 700f	moveq	#(object_size)/4-1,d0
0000d646 22c1	move.l	d1,(a1)+
0000d648 51c8fffc	dbf	d0,DelObj_Loop
0000d64c 4e75	rts	
0000d65e 45f8f800	lea	(v_spritetablebuffer).w,a2
0000d662 7a00	moveq	#0,d5
0000d664 49f8ac00	lea	(v_spritequeue).w,a4
0000d668 7e07	moveq	#7,d7
0000d66a 4a54	tst.w	(a4)
0000d66c 670000c0	beq.w	.nextPriority
0000d670 7c02	moveq	#2,d6
0000d672 30746000	movea.w	(a4,d6.w),a0
0000d676 4a10	tst.b	(a0)
0000d678 670000ac	beq.w	.skipObject
0000d67c 08a800070001	bclr	#7,obRender(a0)
0000d682 10280001	move.b	obRender(a0),d0
0000d686 1800	move.b	d0,d4
0000d688 0240000c	andi.w	#$C,d0
0000d68c 6750	beq.s	.screenCoords
0000d68e 227b00be	movea.l	BldSpr_ScrPos(pc,d0.w),a1
0000d692 7000	moveq	#0,d0
0000d694 10280019	move.b	obActWid(a0),d0
0000d698 36280008	move.w	obX(a0),d3
0000d69c 9651	sub.w	(a1),d3
0000d69e 3203	move.w	d3,d1
0000d6a0 d240	add.w	d0,d1
0000d6a2 6b000082	bmi.w	.skipObject
0000d6a6 3203	move.w	d3,d1
0000d6a8 9240	sub.w	d0,d1
0000d6aa 0c410140	cmpi.w	#320,d1
0000d6ae 6c76	bge.s	.skipObject
0000d6b0 06430080	addi.w	#128,d3
0000d6b4 08040004	btst	#4,d4
0000d6b8 672e	beq.s	.assumeHeight
0000d6ba 7000	moveq	#0,d0
0000d6bc 10280016	move.b	obHeight(a0),d0
0000d6c0 3428000c	move.w	obY(a0),d2
0000d6c4 94690004	sub.w	4(a1),d2
0000d6c8 3202	move.w	d2,d1
0000d6ca d240	add.w	d0,d1
0000d6cc 6b58	bmi.s	.skipObject
0000d6ce 3202	move.w	d2,d1
0000d6d0 9240	sub.w	d0,d1
0000d6d2 0c4100e0	cmpi.w	#224,d1
0000d6d6 6c4e	bge.s	.skipObject
0000d6d8 06420080	addi.w	#128,d2
0000d6dc 6022	bra.s	.drawObject
0000d6de 3428000a	move.w	obScreenY(a0),d2
0000d6e2 36280008	move.w	obX(a0),d3
0000d6e6 6018	bra.s	.drawObject
0000d6e8 3428000c	move.w	obY(a0),d2
0000d6ec 94690004	sub.w	4(a1),d2
0000d6f0 06420080	addi.w	#$80,d2
0000d6f4 0c420060	cmpi.w	#$60,d2
0000d6f8 652c	blo.s	.skipObject
0000d6fa 0c420180	cmpi.w	#$180,d2
0000d6fe 6426	bhs.s	.skipObject
0000d700 22680004	movea.l	obMap(a0),a1
0000d704 7200	moveq	#0,d1
0000d706 08040005	btst	#5,d4
0000d70a 6610	bne.s	.drawFrame
0000d70c 1228001a	move.b	obFrame(a0),d1
0000d710 d201	add.b	d1,d1
0000d712 d2f11000	adda.w	(a1,d1.w),a1
0000d716 1219	move.b	(a1)+,d1
0000d718 5301	subq.b	#1,d1
0000d71a 6b04	bmi.s	.setVisible
0000d71c 61000032	bsr.w	BuildSpr_Draw
0000d720 08e800070001	bset	#7,obRender(a0)
0000d726 5446	addq.w	#2,d6
0000d728 5554	subq.w	#2,(a4)
0000d72a 6600ff46	bne.w	.objectLoop
0000d72e 49ec0080	lea	$80(a4),a4
0000d732 51cfff36	dbf	d7,.priorityLoop
0000d736 11c5f62c	move.b	d5,(v_spritecount).w
0000d73a 0c050050	cmpi.b	#$50,d5
0000d73e 6708	beq.s	.spriteLimit
0000d740 24bc00000000	move.l	#0,(a2)
0000d746 4e75	rts	
0000d748 157c0000fffb	move.b	#0,-5(a2)
0000d74e 4e75	rts	
0000d750 36680002	movea.w	obGfx(a0),a3
0000d754 08040000	btst	#0,d4
0000d758 663c	bne.s	BuildSpr_FlipX
0000d75a 08040001	btst	#1,d4
0000d75e 66000084	bne.w	BuildSpr_FlipY
0000d762 0c050050	cmpi.b	#$50,d5
0000d766 672c	beq.s	.return
0000d768 1019	move.b	(a1)+,d0
0000d76a 4880	ext.w	d0
0000d76c d042	add.w	d2,d0
0000d76e 34c0	move.w	d0,(a2)+
0000d770 14d9	move.b	(a1)+,(a2)+
0000d772 5205	addq.b	#1,d5
0000d774 14c5	move.b	d5,(a2)+
0000d776 1019	move.b	(a1)+,d0
0000d778 e148	lsl.w	#8,d0
0000d77a 1019	move.b	(a1)+,d0
0000d77c d04b	add.w	a3,d0
0000d77e 34c0	move.w	d0,(a2)+
0000d780 1019	move.b	(a1)+,d0
0000d782 4880	ext.w	d0
0000d784 d043	add.w	d3,d0
0000d786 024001ff	andi.w	#$1FF,d0
0000d78a 6602	bne.s	.writeX
0000d78c 5240	addq.w	#1,d0
0000d78e 34c0	move.w	d0,(a2)+
0000d790 51c9ffd0	dbf	d1,BuildSpr_Normal
0000d794 4e75	rts	
0000d796 08040001	btst	#1,d4
0000d79a 6600008e	bne.w	BuildSpr_FlipXY
0000d79e 0c050050	cmpi.b	#$50,d5
0000d7a2 673e	beq.s	.return
0000d7a4 1019	move.b	(a1)+,d0
0000d7a6 4880	ext.w	d0
0000d7a8 d042	add.w	d2,d0
0000d7aa 34c0	move.w	d0,(a2)+
0000d7ac 1819	move.b	(a1)+,d4
0000d7ae 14c4	move.b	d4,(a2)+
0000d7b0 5205	addq.b	#1,d5
0000d7b2 14c5	move.b	d5,(a2)+
0000d7b4 1019	move.b	(a1)+,d0
0000d7b6 e148	lsl.w	#8,d0
0000d7b8 1019	move.b	(a1)+,d0
0000d7ba d04b	add.w	a3,d0
0000d7bc 0a400800	eori.w	#$800,d0
0000d7c0 34c0	move.w	d0,(a2)+
0000d7c2 1019	move.b	(a1)+,d0
0000d7c4 4880	ext.w	d0
0000d7c6 4440	neg.w	d0
0000d7c8 d804	add.b	d4,d4
0000d7ca 02440018	andi.w	#$18,d4
0000d7ce 5044	addq.w	#8,d4
0000d7d0 9044	sub.w	d4,d0
0000d7d2 d043	add.w	d3,d0
0000d7d4 024001ff	andi.w	#$1FF,d0
0000d7d8 6602	bne.s	.writeX
0000d7da 5240	addq.w	#1,d0
0000d7dc 34c0	move.w	d0,(a2)+
0000d7de 51c9ffbe	dbf	d1,.loop
0000d7e2 4e75	rts	
0000d7e4 0c050050	cmpi.b	#$50,d5
0000d7e8 673e	beq.s	.return
0000d7ea 1019	move.b	(a1)+,d0
0000d7ec 1811	move.b	(a1),d4
0000d7ee 4880	ext.w	d0
0000d7f0 4440	neg.w	d0
0000d7f2 e70c	lsl.b	#3,d4
0000d7f4 02440018	andi.w	#$18,d4
0000d7f8 5044	addq.w	#8,d4
0000d7fa 9044	sub.w	d4,d0
0000d7fc d042	add.w	d2,d0
0000d7fe 34c0	move.w	d0,(a2)+
0000d800 14d9	move.b	(a1)+,(a2)+
0000d802 5205	addq.b	#1,d5
0000d804 14c5	move.b	d5,(a2)+
0000d806 1019	move.b	(a1)+,d0
0000d808 e148	lsl.w	#8,d0
0000d80a 1019	move.b	(a1)+,d0
0000d80c d04b	add.w	a3,d0
0000d80e 0a401000	eori.w	#$1000,d0
0000d812 34c0	move.w	d0,(a2)+
0000d814 1019	move.b	(a1)+,d0
0000d816 4880	ext.w	d0
0000d818 d043	add.w	d3,d0
0000d81a 024001ff	andi.w	#$1FF,d0
0000d81e 6602	bne.s	.writeX
0000d820 5240	addq.w	#1,d0
0000d822 34c0	move.w	d0,(a2)+
0000d824 51c9ffbe	dbf	d1,BuildSpr_FlipY
0000d828 4e75	rts	
0000d82a 0c050050	cmpi.b	#$50,d5
0000d82e 674c	beq.s	.return
0000d830 1019	move.b	(a1)+,d0
0000d832 1811	move.b	(a1),d4
0000d834 4880	ext.w	d0
0000d836 4440	neg.w	d0
0000d838 e70c	lsl.b	#3,d4
0000d83a 02440018	andi.w	#$18,d4
0000d83e 5044	addq.w	#8,d4
0000d840 9044	sub.w	d4,d0
0000d842 d042	add.w	d2,d0
0000d844 34c0	move.w	d0,(a2)+
0000d846 1819	move.b	(a1)+,d4
0000d848 14c4	move.b	d4,(a2)+
0000d84a 5205	addq.b	#1,d5
0000d84c 14c5	move.b	d5,(a2)+
0000d84e 1019	move.b	(a1)+,d0
0000d850 e148	lsl.w	#8,d0
0000d852 1019	move.b	(a1)+,d0
0000d854 d04b	add.w	a3,d0
0000d856 0a401800	eori.w	#$1800,d0
0000d85a 34c0	move.w	d0,(a2)+
0000d85c 1019	move.b	(a1)+,d0
0000d85e 4880	ext.w	d0
0000d860 4440	neg.w	d0
0000d862 d804	add.b	d4,d4
0000d864 02440018	andi.w	#$18,d4
0000d868 5044	addq.w	#8,d4
0000d86a 9044	sub.w	d4,d0
0000d86c d043	add.w	d3,d0
0000d86e 024001ff	andi.w	#$1FF,d0
0000d872 6602	bne.s	.writeX
0000d874 5240	addq.w	#1,d0
0000d876 34c0	move.w	d0,(a2)+
0000d878 51c9ffb0	dbf	d1,BuildSpr_FlipXY
0000d87c 4e75	rts	
0000d87e 30280008	move.w	obX(a0),d0
0000d882 9078f700	sub.w	(v_screenposx).w,d0
0000d886 6b1a	bmi.s	.offscreen
0000d888 0c400140	cmpi.w	#320,d0
0000d88c 6c14	bge.s	.offscreen
0000d88e 3228000c	move.w	obY(a0),d1
0000d892 9278f704	sub.w	(v_screenposy).w,d1
0000d896 6b0a	bmi.s	.offscreen
0000d898 0c4100e0	cmpi.w	#224,d1
0000d89c 6c04	bge.s	.offscreen
0000d89e 7000	moveq	#0,d0
0000d8a0 4e75	rts	
0000d8a2 7001	moveq	#1,d0
0000d8a4 4e75	rts	
0000d8a6 7200	moveq	#0,d1
0000d8a8 12280019	move.b	obActWid(a0),d1
0000d8ac 30280008	move.w	obX(a0),d0
0000d8b0 9078f700	sub.w	(v_screenposx).w,d0
0000d8b4 d041	add.w	d1,d0
0000d8b6 6b1e	bmi.s	.offscreen2
0000d8b8 d241	add.w	d1,d1
0000d8ba 9041	sub.w	d1,d0
0000d8bc 0c400140	cmpi.w	#320,d0
0000d8c0 6c14	bge.s	.offscreen2
0000d8c2 3228000c	move.w	obY(a0),d1
0000d8c6 9278f704	sub.w	(v_screenposy).w,d1
0000d8ca 6b0a	bmi.s	.offscreen2
0000d8cc 0c4100e0	cmpi.w	#224,d1
0000d8d0 6c04	bge.s	.offscreen2
0000d8d2 7000	moveq	#0,d0
0000d8d4 4e75	rts	
0000d8d6 7001	moveq	#1,d0
0000d8d8 4e75	rts	
0000d8da 7000	moveq	#0,d0
0000d8dc 1038f76c	move.b	(v_opl_routine).w,d0
0000d8e0 303b0006	move.w	OPL_Index(pc,d0.w),d0
0000d8e4 4efb0002	jmp	OPL_Index(pc,d0.w)
0000d8ec 5438f76c	addq.b	#2,(v_opl_routine).w
0000d8f0 3038fe10	move.w	(v_zone).w,d0
0000d8f4 ed08	lsl.b	#6,d0
0000d8f6 e848	lsr.w	#4,d0
0000d8f8 41f90006b000	lea	(ObjPos_Index).l,a0
0000d8fe 2248	movea.l	a0,a1
0000d900 d0f00000	adda.w	(a0,d0.w),a0
0000d904 21c8f770	move.l	a0,(v_opl_data).w
0000d908 21c8f774	move.l	a0,(v_opl_data+4).w
0000d90c d2f10002	adda.w	2(a1,d0.w),a1
0000d910 21c9f778	move.l	a1,(v_opl_data+8).w
0000d914 21c9f77c	move.l	a1,(v_opl_data+$C).w
0000d918 45f8fc00	lea	(v_objstate).w,a2
0000d91c 34fc0101	move.w	#$101,(a2)+
0000d920 303c005e	move.w	#(v_objstate_end-v_objstate-2)/2-1,d0
0000d924 429a	clr.l	(a2)+
0000d926 51c8fffc	dbf	d0,OPL_ClrList
0000d92a 45f8fc00	lea	(v_objstate).w,a2
0000d92e 7400	moveq	#0,d2
0000d930 3c38f700	move.w	(v_screenposx).w,d6
0000d934 04460080	subi.w	#$80,d6
0000d938 6402	bhs.s	loc_D93C
0000d93a 7c00	moveq	#0,d6
0000d93c 0246ff80	andi.w	#$FF80,d6
0000d940 2078f770	movea.l	(v_opl_data).w,a0
0000d944 bc50	cmp.w	(a0),d6
0000d946 630e	bls.s	loc_D956
0000d948 4a280004	tst.b	4(a0)
0000d94c 6a04	bpl.s	loc_D952
0000d94e 1412	move.b	(a2),d2
0000d950 5212	addq.b	#1,(a2)
0000d952 5c48	addq.w	#6,a0
0000d954 60ee	bra.s	loc_D944
0000d956 21c8f770	move.l	a0,(v_opl_data).w
0000d95a 2078f774	movea.l	(v_opl_data+4).w,a0
0000d95e 04460080	subi.w	#$80,d6
0000d962 6512	blo.s	loc_D976
0000d964 bc50	cmp.w	(a0),d6
0000d966 630e	bls.s	loc_D976
0000d968 4a280004	tst.b	4(a0)
0000d96c 6a04	bpl.s	loc_D972
0000d96e 522a0001	addq.b	#1,1(a2)
0000d972 5c48	addq.w	#6,a0
0000d974 60ee	bra.s	loc_D964
0000d976 21c8f774	move.l	a0,(v_opl_data+4).w
0000d97a 31fcfffff76e	move.w	#-1,(v_opl_screen).w
0000d980 45f8fc00	lea	(v_objstate).w,a2
0000d984 7400	moveq	#0,d2
0000d986 3c38f700	move.w	(v_screenposx).w,d6
0000d98a 0246ff80	andi.w	#$FF80,d6
0000d98e bc78f76e	cmp.w	(v_opl_screen).w,d6
0000d992 670000a6	beq.w	locret_DA3A
0000d996 6c5e	bge.s	loc_D9F6
0000d998 31c6f76e	move.w	d6,(v_opl_screen).w
0000d99c 2078f774	movea.l	(v_opl_data+4).w,a0
0000d9a0 04460080	subi.w	#$80,d6
0000d9a4 652c	blo.s	loc_D9D2
0000d9a6 bc68fffa	cmp.w	-6(a0),d6
0000d9aa 6c26	bge.s	loc_D9D2
0000d9ac 5d48	subq.w	#6,a0
0000d9ae 4a280004	tst.b	4(a0)
0000d9b2 6a08	bpl.s	loc_D9BC
0000d9b4 532a0001	subq.b	#1,1(a2)
0000d9b8 142a0001	move.b	1(a2),d2
0000d9bc 6100007e	bsr.w	loc_DA3C
0000d9c0 6604	bne.s	loc_D9C6
0000d9c2 5d48	subq.w	#6,a0
0000d9c4 60e0	bra.s	loc_D9A6
0000d9c6 4a280004	tst.b	4(a0)
0000d9ca 6a04	bpl.s	loc_D9D0
0000d9cc 522a0001	addq.b	#1,1(a2)
0000d9d0 5c48	addq.w	#6,a0
0000d9d2 21c8f774	move.l	a0,(v_opl_data+4).w
0000d9d6 2078f770	movea.l	(v_opl_data).w,a0
0000d9da 06460300	addi.w	#$300,d6
0000d9de bc68fffa	cmp.w	-6(a0),d6
0000d9e2 6e0c	bgt.s	loc_D9F0
0000d9e4 4a28fffe	tst.b	-2(a0)
0000d9e8 6a02	bpl.s	loc_D9EC
0000d9ea 5312	subq.b	#1,(a2)
0000d9ec 5d48	subq.w	#6,a0
0000d9ee 60ee	bra.s	loc_D9DE
0000d9f0 21c8f770	move.l	a0,(v_opl_data).w
0000d9f4 4e75	rts	
0000d9f6 31c6f76e	move.w	d6,(v_opl_screen).w
0000d9fa 2078f770	movea.l	(v_opl_data).w,a0
0000d9fe 06460280	addi.w	#$280,d6
0000da02 bc50	cmp.w	(a0),d6
0000da04 6310	bls.s	loc_DA16
0000da06 4a280004	tst.b	4(a0)
0000da0a 6a04	bpl.s	loc_DA10
0000da0c 1412	move.b	(a2),d2
0000da0e 5212	addq.b	#1,(a2)
0000da10 6100002a	bsr.w	loc_DA3C
0000da14 67ec	beq.s	loc_DA02
0000da16 21c8f770	move.l	a0,(v_opl_data).w
0000da1a 2078f774	movea.l	(v_opl_data+4).w,a0
0000da1e 04460300	subi.w	#$300,d6
0000da22 6512	blo.s	loc_DA36
0000da24 bc50	cmp.w	(a0),d6
0000da26 630e	bls.s	loc_DA36
0000da28 4a280004	tst.b	4(a0)
0000da2c 6a04	bpl.s	loc_DA32
0000da2e 522a0001	addq.b	#1,1(a2)
0000da32 5c48	addq.w	#6,a0
0000da34 60ee	bra.s	loc_DA24
0000da36 21c8f774	move.l	a0,(v_opl_data+4).w
0000da3a 4e75	rts	
0000da3c 4a280004	tst.b	4(a0)
0000da40 6a0e	bpl.s	OPL_MakeItem
0000da42 08f200072002	bset	#7,2(a2,d2.w)
0000da48 6706	beq.s	OPL_MakeItem
0000da4a 5c48	addq.w	#6,a0
0000da4c 7000	moveq	#0,d0
0000da4e 4e75	rts	
0000da50 6100003a	bsr.w	FindFreeObj
0000da54 6634	bne.s	locret_DA8A
0000da56 33580008	move.w	(a0)+,obX(a1)
0000da5a 3018	move.w	(a0)+,d0
0000da5c 3200	move.w	d0,d1
0000da5e 02400fff	andi.w	#$FFF,d0
0000da62 3340000c	move.w	d0,obY(a1)
0000da66 e559	rol.w	#2,d1
0000da68 02010003	andi.b	#3,d1
0000da6c 13410001	move.b	d1,obRender(a1)
0000da70 13410022	move.b	d1,obStatus(a1)
0000da74 1018	move.b	(a0)+,d0
0000da76 6a08	bpl.s	loc_DA80
0000da78 0200007f	andi.b	#$7F,d0
0000da7c 13420023	move.b	d2,obRespawnNo(a1)
0000da84 13580028	move.b	(a0)+,obSubtype(a1)
0000da88 7000	moveq	#0,d0
0000da8a 4e75	rts	
0000da8c 43f8d800	lea	(v_lvlobjspace).w,a1
0000da90 303c005f	move.w	#(v_lvlobjend-v_lvlobjspace)/object_size-1,d0
0000da94 4a11	tst.b	obID(a1)
0000da96 6708	beq.s	FFree_Found
0000da98 43e90040	lea	object_size(a1),a1
0000da9c 51c8fff6	dbf	d0,FFree_Loop
0000daa0 4e75	rts	
0000daa2 2248	movea.l	a0,a1
0000daa4 303cf000	move.w	#v_lvlobjend&$FFFF,d0
0000daa8 9048	sub.w	a0,d0
0000daaa ec48	lsr.w	#6,d0
0000daac 5340	subq.w	#1,d0
0000daae 650c	bcs.s	NFree_Found
0000dab0 4a11	tst.b	obID(a1)
0000dab2 6708	beq.s	NFree_Found
0000dab4 43e90040	lea	object_size(a1),a1
0000dab8 51c8fff6	dbf	d0,NFree_Loop
0000dabc 4e75	rts	
0000dabe 7000	moveq	#0,d0
0000dac0 10280024	move.b	obRoutine(a0),d0
0000dac4 323b002a	move.w	Spring_Index(pc,d0.w),d1
0000dac8 4ebb1026	jsr	Spring_Index(pc,d1.w)
0000dacc 6100fb36	bsr.w	DisplaySprite
0000dad0 30280008	move.w	obX(a0),d0
0000dad4 0240ff80	andi.w	#$FF80,d0
0000dad8 3238f700	move.w	(v_screenposx).w,d1
0000dadc 04410080	subi.w	#128,d1
0000dae0 0241ff80	andi.w	#$FF80,d1
0000dae4 9041	sub.w	d1,d0
0000dae6 0c400280	cmpi.w	#128+320+192,d0
0000daea 6200fb54	bhi.w	DeleteObject
0000daee 4e75	rts	
0000db08 54280024	addq.b	#2,obRoutine(a0)
0000db0c 217c0000dd1a0004	move.l	#Map_Spring,obMap(a0)
0000db14 317c05230002	move.w	#ArtTile_Spring_Horizontal,obGfx(a0)
0000db1a 002800040001	ori.b	#4,obRender(a0)
0000db20 117c00100019	move.b	#$10,obActWid(a0)
0000db26 117c00040018	move.b	#4,obPriority(a0)
0000db2c 10280028	move.b	obSubtype(a0),d0
0000db30 08000004	btst	#4,d0
0000db34 671e	beq.s	Spring_NotLR
0000db36 117c00080024	move.b	#8,obRoutine(a0)
0000db3c 117c0001001c	move.b	#1,obAnim(a0)
0000db42 117c0003001a	move.b	#3,obFrame(a0)
0000db48 317c05330002	move.w	#ArtTile_Spring_Vertical,obGfx(a0)
0000db4e 117c00080019	move.b	#8,obActWid(a0)
0000db54 08000005	btst	#5,d0
0000db58 670c	beq.s	Spring_NotDwn
0000db5a 117c000e0024	move.b	#$E,obRoutine(a0)
0000db60 08e800010022	bset	#1,obStatus(a0)
0000db66 08000001	btst	#1,d0
0000db6a 6706	beq.s	loc_DB72
0000db6c 08e800050002	bset	#5,obGfx(a0)
0000db72 0240000f	andi.w	#$F,d0
0000db76 317b008c0030	move.w	Spring_Powers(pc,d0.w),spring_pow(a0)
0000db7c 4e75	rts	
0000db7e 323c001b	move.w	#$1B,d1
0000db82 343c0008	move.w	#8,d2
0000db86 363c0010	move.w	#$10,d3
0000db8a 38280008	move.w	obX(a0),d4
0000db8e 61001e46	bsr.w	SolidObject
0000db92 4a280025	tst.b	obSolid(a0)
0000db96 6602	bne.s	Spring_BounceUp
0000db98 4e75	rts	
0000db9a 54280024	addq.b	#2,obRoutine(a0)
0000db9e 5069000c	addq.w	#8,obY(a1)
0000dba2 336800300012	move.w	spring_pow(a0),obVelY(a1)
0000dba8 08e900010022	bset	#1,obStatus(a1)
0000dbae 08a900030022	bclr	#3,obStatus(a1)
0000dbb4 137c0010001c	move.b	#id_Spring,obAnim(a1)
0000dbba 137c00020024	move.b	#2,obRoutine(a1)
0000dbc0 08a800030022	bclr	#3,obStatus(a0)
0000dbc6 42280025	clr.b	obSolid(a0)
0000dbca 303c00cc	move.w	#sfx_Spring,d0
0000dbce 4eb90000139c	jsr	(QueueSound2).l
0000dbd4 43f90000dcfe	lea	(Ani_Spring).l,a1
0000dbda 6000cb3c	bra.w	AnimateSprite
0000dbde 117c0001001d	move.b	#1,obPrevAni(a0)
0000dbe4 59280024	subq.b	#4,obRoutine(a0)
0000dbe8 4e75	rts	
0000dbea 323c0013	move.w	#$13,d1
0000dbee 343c000e	move.w	#$E,d2
0000dbf2 363c000f	move.w	#$F,d3
0000dbf6 38280008	move.w	obX(a0),d4
0000dbfa 61001dda	bsr.w	SolidObject
0000dbfe 0c2800020024	cmpi.b	#2,obRoutine(a0)
0000dc04 6606	bne.s	loc_DC0C
0000dc06 117c00080024	move.b	#8,obRoutine(a0)
0000dc0c 082800050022	btst	#5,obStatus(a0)
0000dc12 6602	bne.s	Spring_BounceLR
0000dc14 4e75	rts	
0000dc16 54280024	addq.b	#2,obRoutine(a0)
0000dc1a 336800300010	move.w	spring_pow(a0),obVelX(a1)
0000dc20 50690008	addq.w	#8,obX(a1)
0000dc24 082800000022	btst	#0,obStatus(a0)
0000dc2a 660a	bne.s	Spring_Flipped
0000dc2c 046900100008	subi.w	#$10,obX(a1)
0000dc32 44690010	neg.w	obVelX(a1)
0000dc36 337c000f003e	move.w	#15,locktime(a1)
0000dc3c 336900100014	move.w	obVelX(a1),obInertia(a1)
0000dc42 086900000022	bchg	#0,obStatus(a1)
0000dc48 082900020022	btst	#2,obStatus(a1)
0000dc4e 6606	bne.s	loc_DC56
0000dc50 137c0000001c	move.b	#id_Walk,obAnim(a1)
0000dc56 08a800050022	bclr	#5,obStatus(a0)
0000dc5c 08a900050022	bclr	#5,obStatus(a1)
0000dc62 303c00cc	move.w	#sfx_Spring,d0
0000dc66 4eb90000139c	jsr	(QueueSound2).l
0000dc6c 43f90000dcfe	lea	(Ani_Spring).l,a1
0000dc72 6000caa4	bra.w	AnimateSprite
0000dc76 117c0002001d	move.b	#2,obPrevAni(a0)
0000dc7c 59280024	subq.b	#4,obRoutine(a0)
0000dc80 4e75	rts	
0000dc82 323c001b	move.w	#$1B,d1
0000dc86 343c0008	move.w	#8,d2
0000dc8a 363c0010	move.w	#$10,d3
0000dc8e 38280008	move.w	obX(a0),d4
0000dc92 61001d42	bsr.w	SolidObject
0000dc96 0c2800020024	cmpi.b	#2,obRoutine(a0)
0000dc9c 6606	bne.s	loc_DCA4
0000dc9e 117c000e0024	move.b	#$E,obRoutine(a0)
0000dca4 4a280025	tst.b	obSolid(a0)
0000dca8 6604	bne.s	locret_DCAE
0000dcaa 4a44	tst.w	d4
0000dcac 6b02	bmi.s	Spring_BounceDwn
0000dcae 4e75	rts	
0000dcb0 54280024	addq.b	#2,obRoutine(a0)
0000dcb4 5169000c	subq.w	#8,obY(a1)
0000dcb8 336800300012	move.w	spring_pow(a0),obVelY(a1)
0000dcbe 44690012	neg.w	obVelY(a1)
0000dcc2 08e900010022	bset	#1,obStatus(a1)
0000dcc8 08a900030022	bclr	#3,obStatus(a1)
0000dcce 137c00020024	move.b	#2,obRoutine(a1)
0000dcd4 08a800030022	bclr	#3,obStatus(a0)
0000dcda 42280025	clr.b	obSolid(a0)
0000dcde 303c00cc	move.w	#sfx_Spring,d0
0000dce2 4eb90000139c	jsr	(QueueSound2).l
0000dce8 43f90000dcfe	lea	(Ani_Spring).l,a1
0000dcee 6000ca28	bra.w	AnimateSprite
0000dcf2 117c0001001d	move.b	#1,obPrevAni(a0)
0000dcf8 59280024	subq.b	#4,obRoutine(a0)
0000dcfc 4e75	rts	
0000dd68 7000	moveq	#0,d0
0000dd6a 10280024	move.b	obRoutine(a0),d0
0000dd6e 323b0006	move.w	Newt_Index(pc,d0.w),d1
0000dd72 4efb1002	jmp	Newt_Index(pc,d1.w)
0000dd7c 54280024	addq.b	#2,obRoutine(a0)
0000dd80 217c0000df420004	move.l	#Map_Newt,obMap(a0)
0000dd88 317c049b0002	move.w	#ArtTile_Newtron,obGfx(a0)
0000dd8e 117c00040001	move.b	#4,obRender(a0)
0000dd94 117c00040018	move.b	#4,obPriority(a0)
0000dd9a 117c00140019	move.b	#$14,obActWid(a0)
0000dda0 117c00100016	move.b	#$10,obHeight(a0)
0000dda6 117c00080017	move.b	#8,obWidth(a0)
0000ddac 7000	moveq	#0,d0
0000ddae 10280025	move.b	ob2ndRout(a0),d0
0000ddb2 323b0014	move.w	.index(pc,d0.w),d1
0000ddb6 4ebb1010	jsr	.index(pc,d1.w)
0000ddba 43f90000df1a	lea	(Ani_Newt).l,a1
0000ddc0 6100c956	bsr.w	AnimateSprite
0000ddc4 600018e6	bra.w	RememberState
0000ddd2 08e800000022	bset	#0,obStatus(a0)
0000ddd8 3038d008	move.w	(v_player+obX).w,d0
0000dddc 90680008	sub.w	obX(a0),d0
0000dde0 6408	bcc.s	.sonicisright
0000dde2 4440	neg.w	d0
0000dde4 08a800000022	bclr	#0,obStatus(a0)
0000ddea 0c400080	cmpi.w	#$80,d0
0000ddee 6422	bhs.s	.outofrange
0000ddf0 54280025	addq.b	#2,ob2ndRout(a0)
0000ddf4 117c0001001c	move.b	#1,obAnim(a0)
0000ddfa 4a280028	tst.b	obSubtype(a0)
0000ddfe 6712	beq.s	.istype00
0000de00 317c249b0002	move.w	#ArtTile_Newtron|Tile_Pal2,obGfx(a0)
0000de06 117c00080025	move.b	#8,ob2ndRout(a0)
0000de0c 117c0004001c	move.b	#4,obAnim(a0)
0000de12 4e75	rts	
0000de14 0c280004001a	cmpi.b	#4,obFrame(a0)
0000de1a 6418	bhs.s	.fall
0000de1c 08e800000022	bset	#0,obStatus(a0)
0000de22 3038d008	move.w	(v_player+obX).w,d0
0000de26 90680008	sub.w	obX(a0),d0
0000de2a 6406	bcc.s	.sonicisright2
0000de2c 08a800000022	bclr	#0,obStatus(a0)
0000de32 4e75	rts	
0000de34 0c280001001a	cmpi.b	#1,obFrame(a0)
0000de3a 6606	bne.s	.loc_DE42
0000de3c 117c000c0020	move.b	#$C,obColType(a0)
0000de42 6100f76e	bsr.w	ObjectFall
0000de46 61006fd0	bsr.w	ObjFloorDist
0000de4a 4a41	tst.w	d1
0000de4c 6a38	bpl.s	.keepfalling
0000de4e d368000c	add.w	d1,obY(a0)
0000de52 317c00000012	move.w	#0,obVelY(a0)
0000de58 54280025	addq.b	#2,ob2ndRout(a0)
0000de5c 117c0002001c	move.b	#2,obAnim(a0)
0000de62 082800050002	btst	#5,obGfx(a0)
0000de68 6704	beq.s	.notgreen
0000de6a 5228001c	addq.b	#1,obAnim(a0)
0000de6e 117c000d0020	move.b	#$D,obColType(a0)
0000de74 317c02000010	move.w	#$200,obVelX(a0)
0000de7a 082800000022	btst	#0,obStatus(a0)
0000de80 6604	bne.s	.keepfalling
0000de82 44680010	neg.w	obVelX(a0)
0000de86 4e75	rts	
0000de88 6100f754	bsr.w	SpeedToPos
0000de8c 61006f8a	bsr.w	ObjFloorDist
0000de90 0c41fff8	cmpi.w	#-8,d1
0000de94 6d0c	blt.s	.nextroutine
0000de96 0c41000c	cmpi.w	#$C,d1
0000de9a 6c06	bge.s	.nextroutine
0000de9c d368000c	add.w	d1,obY(a0)
0000dea0 4e75	rts	
0000dea2 54280025	addq.b	#2,ob2ndRout(a0)
0000dea6 4e75	rts	
0000dea8 6100f734	bsr.w	SpeedToPos
0000deac 4e75	rts	
0000deae 0c280001001a	cmpi.b	#1,obFrame(a0)
0000deb4 6606	bne.s	.firemissile
0000deb6 117c000c0020	move.b	#$C,obColType(a0)
0000debc 0c280002001a	cmpi.b	#2,obFrame(a0)
0000dec2 6650	bne.s	.fail
0000dec4 4a280032	tst.b	objoff_32(a0)
0000dec8 664a	bne.s	.fail
0000deca 117c00010032	move.b	#1,objoff_32(a0)
0000ded0 6100fbba	bsr.w	FindFreeObj
0000ded4 663e	bne.s	.fail
0000dedc 336800080008	move.w	obX(a0),obX(a1)
0000dee2 3368000c000c	move.w	obY(a0),obY(a1)
0000dee8 5169000c	subq.w	#8,obY(a1)
0000deec 337c02000010	move.w	#$200,obVelX(a1)
0000def2 303c0014	move.w	#$14,d0
0000def6 082800000022	btst	#0,obStatus(a0)
0000defc 6606	bne.s	.noflip
0000defe 4440	neg.w	d0
0000df00 44690010	neg.w	obVelX(a1)
0000df04 d1690008	add.w	d0,obX(a1)
0000df08 136800220022	move.b	obStatus(a0),obStatus(a1)
0000df0e 137c00010028	move.b	#1,obSubtype(a1)
0000df14 4e75	rts	
0000df16 6000f728	bra.w	DeleteObject
0000dffa 7000	moveq	#0,d0
0000dffc 10280024	move.b	obRoutine(a0),d0
0000e000 323b0006	move.w	Roll_Index(pc,d0.w),d1
0000e004 4efb1002	jmp	Roll_Index(pc,d1.w)
0000e00c 117c000e0016	move.b	#$E,obHeight(a0)
0000e012 117c00080017	move.b	#8,obWidth(a0)
0000e018 6100f598	bsr.w	ObjectFall
0000e01c 61006dfa	bsr.w	ObjFloorDist
0000e020 4a41	tst.w	d1
0000e022 6a2e	bpl.s	locret_E052
0000e024 d368000c	add.w	d1,obY(a0)
0000e028 317c00000012	move.w	#0,obVelY(a0)
0000e02e 54280024	addq.b	#2,obRoutine(a0)
0000e032 217c0000e1a20004	move.l	#Map_Roll,obMap(a0)
0000e03a 317c04b80002	move.w	#ArtTile_Roller,obGfx(a0)
0000e040 117c00040001	move.b	#4,obRender(a0)
0000e046 117c00040018	move.b	#4,obPriority(a0)
0000e04c 117c00100019	move.b	#$10,obActWid(a0)
0000e052 4e75	rts	
0000e054 7000	moveq	#0,d0
0000e056 10280025	move.b	ob2ndRout(a0),d0
0000e05a 323b0048	move.w	Roll_Index2(pc,d0.w),d1
0000e05e 4ebb1044	jsr	Roll_Index2(pc,d1.w)
0000e062 43f90000e18a	lea	(Ani_Roll).l,a1
0000e068 6100c6ae	bsr.w	AnimateSprite
0000e06c 30280008	move.w	obX(a0),d0
0000e070 0240ff80	andi.w	#$FF80,d0
0000e074 3238f700	move.w	(v_screenposx).w,d1
0000e078 04410080	subi.w	#$80,d1
0000e07c 0241ff80	andi.w	#$FF80,d1
0000e080 9041	sub.w	d1,d0
0000e082 0c400280	cmpi.w	#$280,d0
0000e086 6e000006	bgt.w	Roll_ChkGone
0000e08a 6000f578	bra.w	DisplaySprite
0000e08e 45f8fc00	lea	(v_objstate).w,a2
0000e092 7000	moveq	#0,d0
0000e094 10280023	move.b	obRespawnNo(a0),d0
0000e098 6706	beq.s	Roll_Delete
0000e09a 08b200070002	bclr	#7,2(a2,d0.w)
0000e0a0 6000f59e	bra.w	DeleteObject
0000e0ac 3038d008	move.w	(v_player+obX).w,d0
0000e0b0 04400100	subi.w	#$100,d0
0000e0b4 651c	bcs.s	loc_E0D2
0000e0b6 90680008	sub.w	obX(a0),d0
0000e0ba 6516	bcs.s	loc_E0D2
0000e0bc 58280025	addq.b	#4,ob2ndRout(a0)
0000e0c0 117c0002001c	move.b	#2,obAnim(a0)
0000e0c6 317c07000010	move.w	#$700,obVelX(a0)
0000e0cc 117c008e0020	move.b	#$8E,obColType(a0)
0000e0d2 588f	addq.l	#4,sp
0000e0d4 4e75	rts	
0000e0d6 0c280002001c	cmpi.b	#2,obAnim(a0)
0000e0dc 671a	beq.s	loc_E0F8
0000e0de 53680030	subq.w	#1,objoff_30(a0)
0000e0e2 6a12	bpl.s	locret_E0F6
0000e0e4 117c0001001c	move.b	#1,obAnim(a0)
0000e0ea 317c07000010	move.w	#$700,obVelX(a0)
0000e0f0 117c008e0020	move.b	#$8E,obColType(a0)
0000e0f6 4e75	rts	
0000e0f8 54280025	addq.b	#2,ob2ndRout(a0)
0000e0fc 4e75	rts	
0000e0fe 61000052	bsr.w	Roll_Stop
0000e102 6100f4da	bsr.w	SpeedToPos
0000e106 61006d10	bsr.w	ObjFloorDist
0000e10a 0c41fff8	cmpi.w	#-8,d1
0000e10e 6d0c	blt.s	Roll_Jump
0000e110 0c41000c	cmpi.w	#$C,d1
0000e114 6c06	bge.s	Roll_Jump
0000e116 d368000c	add.w	d1,obY(a0)
0000e11a 4e75	rts	
0000e11c 54280025	addq.b	#2,ob2ndRout(a0)
0000e120 08e800000032	bset	#0,objoff_32(a0)
0000e126 6706	beq.s	locret_E12E
0000e128 317cfa000012	move.w	#-$600,obVelY(a0)
0000e12e 4e75	rts	
0000e130 6100f480	bsr.w	ObjectFall
0000e134 4a680012	tst.w	obVelY(a0)
0000e138 6b16	bmi.s	locret_E150
0000e13a 61006cdc	bsr.w	ObjFloorDist
0000e13e 4a41	tst.w	d1
0000e140 6a0e	bpl.s	locret_E150
0000e142 d368000c	add.w	d1,obY(a0)
0000e146 55280025	subq.b	#2,ob2ndRout(a0)
0000e14a 317c00000012	move.w	#0,obVelY(a0)
0000e150 4e75	rts	
0000e152 4a280032	tst.b	objoff_32(a0)
0000e156 6b30	bmi.s	locret_E188
0000e158 3038d008	move.w	(v_player+obX).w,d0
0000e15c 04400030	subi.w	#$30,d0
0000e160 90680008	sub.w	obX(a0),d0
0000e164 6422	bcc.s	locret_E188
0000e166 117c0000001c	move.b	#0,obAnim(a0)
0000e16c 117c000e0020	move.b	#$E,obColType(a0)
0000e172 42680010	clr.w	obVelX(a0)
0000e176 317c00780030	move.w	#120,objoff_30(a0)
0000e17c 117c00020025	move.b	#2,ob2ndRout(a0)
0000e182 08e800070032	bset	#7,objoff_32(a0)
0000e188 4e75	rts	
0000e1d4 7000	moveq	#0,d0
0000e1d6 10280024	move.b	obRoutine(a0),d0
0000e1da 323b0006	move.w	Edge_Index(pc,d0.w),d1
0000e1de 4efb1002	jmp	Edge_Index(pc,d1.w)
0000e1e8 54280024	addq.b	#2,obRoutine(a0)
0000e1ec 217c0000e2500004	move.l	#Map_Edge,obMap(a0)
0000e1f4 317c434c0002	move.w	#ArtTile_GHZ_Edge_Wall|Tile_Pal3,obGfx(a0)
0000e1fa 002800040001	ori.b	#4,obRender(a0)
0000e200 117c00080019	move.b	#8,obActWid(a0)
0000e206 117c00060018	move.b	#6,obPriority(a0)
0000e20c 11680028001a	move.b	obSubtype(a0),obFrame(a0)
0000e212 08a80004001a	bclr	#4,obFrame(a0)
0000e218 6706	beq.s	Edge_Solid
0000e21a 54280024	addq.b	#2,obRoutine(a0)
0000e21e 600c	bra.s	Edge_Display
0000e220 323c0013	move.w	#$13,d1
0000e224 343c0028	move.w	#$28,d2
0000e228 6100a838	bsr.w	EdgeWall_SolidWall
0000e22c 6100f3d6	bsr.w	DisplaySprite
0000e230 30280008	move.w	obX(a0),d0
0000e234 0240ff80	andi.w	#$FF80,d0
0000e238 3238f700	move.w	(v_screenposx).w,d1
0000e23c 04410080	subi.w	#128,d1
0000e240 0241ff80	andi.w	#$FF80,d1
0000e244 9041	sub.w	d1,d0
0000e246 0c400280	cmpi.w	#128+320+192,d0
0000e24a 6200f3f4	bhi.w	DeleteObject
0000e24e 4e75	rts	
0000e296 7000	moveq	#0,d0
0000e298 10280024	move.b	obRoutine(a0),d0
0000e29c 323b000a	move.w	LavaM_Index(pc,d0.w),d1
0000e2a0 4ebb1006	jsr	LavaM_Index(pc,d1.w)
0000e2a4 60000132	bra.w	LBall_ChkDel
0000e2b2 54280024	addq.b	#2,obRoutine(a0)
0000e2b6 10280028	move.b	obSubtype(a0),d0
0000e2ba e848	lsr.w	#4,d0
0000e2bc 0240000f	andi.w	#$F,d0
0000e2c0 117b00ea001f	move.b	LavaM_Rates(pc,d0.w),obDelayAni(a0)
0000e2c6 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
0000e2cc 0228000f0028	andi.b	#$F,obSubtype(a0)
0000e2d2 5328001e	subq.b	#1,obTimeFrame(a0)
0000e2d6 662a	bne.s	LavaM_Wait
0000e2d8 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
0000e2de 6100f59e	bsr.w	ChkObjectVisible
0000e2e2 661e	bne.s	LavaM_Wait
0000e2e4 6100f7a6	bsr.w	FindFreeObj
0000e2e8 6618	bne.s	LavaM_Wait
0000e2f0 336800080008	move.w	obX(a0),obX(a1)
0000e2f6 3368000c000c	move.w	obY(a0),obY(a1)
0000e2fc 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000e302 4e75	rts	
0000e304 7000	moveq	#0,d0
0000e306 10280024	move.b	obRoutine(a0),d0
0000e30a 323b000a	move.w	LBall_Index(pc,d0.w),d1
0000e30e 4ebb1006	jsr	LBall_Index(pc,d1.w)
0000e312 6000f2f0	bra.w	DisplaySprite
0000e32e 54280024	addq.b	#2,obRoutine(a0)
0000e332 117c00080016	move.b	#8,obHeight(a0)
0000e338 117c00080017	move.b	#8,obWidth(a0)
0000e33e 217c0000b36e0004	move.l	#Map_Fire,obMap(a0)
0000e346 317c03450002	move.w	#ArtTile_MZ_Fireball,obGfx(a0)
0000e34c 0c380003fe10	cmpi.b	#id_SLZ,(v_zone).w
0000e352 6606	bne.s	.notSLZ
0000e354 317c04800002	move.w	#ArtTile_SLZ_Fireball,obGfx(a0)
0000e35a 117c00040001	move.b	#4,obRender(a0)
0000e360 117c00030018	move.b	#3,obPriority(a0)
0000e366 117c008b0020	move.b	#$8B,obColType(a0)
0000e36c 3168000c0030	move.w	obY(a0),objoff_30(a0)
0000e372 4a280029	tst.b	objoff_29(a0)
0000e376 6704	beq.s	.speed
0000e378 54280018	addq.b	#2,obPriority(a0)
0000e37c 7000	moveq	#0,d0
0000e37e 10280028	move.b	obSubtype(a0),d0
0000e382 d040	add.w	d0,d0
0000e384 317b00960012	move.w	LBall_Speeds(pc,d0.w),obVelY(a0)
0000e38a 117c00080019	move.b	#8,obActWid(a0)
0000e390 0c2800060028	cmpi.b	#6,obSubtype(a0)
0000e396 6518	blo.s	.sound
0000e398 117c00100019	move.b	#$10,obActWid(a0)
0000e39e 117c0002001c	move.b	#2,obAnim(a0)
0000e3a4 316800120010	move.w	obVelY(a0),obVelX(a0)
0000e3aa 317c00000012	move.w	#0,obVelY(a0)
0000e3b0 303c00ae	move.w	#sfx_Fireball,d0
0000e3b4 4eb90000139c	jsr	(QueueSound2).l
0000e3ba 7000	moveq	#0,d0
0000e3bc 10280028	move.b	obSubtype(a0),d0
0000e3c0 d040	add.w	d0,d0
0000e3c2 323b0034	move.w	LBall_TypeIndex(pc,d0.w),d1
0000e3c6 4ebb1030	jsr	LBall_TypeIndex(pc,d1.w)
0000e3ca 6100f212	bsr.w	SpeedToPos
0000e3ce 43f90000e4c4	lea	(Ani_Fire).l,a1
0000e3d4 6100c342	bsr.w	AnimateSprite
0000e3d8 30280008	move.w	obX(a0),d0
0000e3dc 0240ff80	andi.w	#$FF80,d0
0000e3e0 3238f700	move.w	(v_screenposx).w,d1
0000e3e4 04410080	subi.w	#128,d1
0000e3e8 0241ff80	andi.w	#$FF80,d1
0000e3ec 9041	sub.w	d1,d0
0000e3ee 0c400280	cmpi.w	#128+320+192,d0
0000e3f2 6200f24c	bhi.w	DeleteObject
0000e3f6 4e75	rts	
0000e40a 066800180012	addi.w	#$18,obVelY(a0)
0000e410 30280030	move.w	objoff_30(a0),d0
0000e414 b068000c	cmp.w	obY(a0),d0
0000e418 6404	bhs.s	loc_E41E
0000e41a 54280024	addq.b	#2,obRoutine(a0)
0000e41e 08a800010022	bclr	#1,obStatus(a0)
0000e424 4a680012	tst.w	obVelY(a0)
0000e428 6a06	bpl.s	locret_E430
0000e42a 08e800010022	bset	#1,obStatus(a0)
0000e430 4e75	rts	
0000e432 08e800010022	bset	#1,obStatus(a0)
0000e438 61006b64	bsr.w	ObjHitCeiling
0000e43c 4a41	tst.w	d1
0000e43e 6a12	bpl.s	locret_E452
0000e440 117c00080028	move.b	#8,obSubtype(a0)
0000e446 117c0001001c	move.b	#1,obAnim(a0)
0000e44c 317c00000012	move.w	#0,obVelY(a0)
0000e452 4e75	rts	
0000e454 08a800010022	bclr	#1,obStatus(a0)
0000e45a 610069bc	bsr.w	ObjFloorDist
0000e45e 4a41	tst.w	d1
0000e460 6a12	bpl.s	locret_E474
0000e462 117c00080028	move.b	#8,obSubtype(a0)
0000e468 117c0001001c	move.b	#1,obAnim(a0)
0000e46e 317c00000012	move.w	#0,obVelY(a0)
0000e474 4e75	rts	
0000e476 08e800000022	bset	#0,obStatus(a0)
0000e47c 76f8	moveq	#-8,d3
0000e47e 61006bec	bsr.w	ObjHitWallLeft
0000e482 4a41	tst.w	d1
0000e484 6a12	bpl.s	locret_E498
0000e486 117c00080028	move.b	#8,obSubtype(a0)
0000e48c 117c0003001c	move.b	#3,obAnim(a0)
0000e492 317c00000010	move.w	#0,obVelX(a0)
0000e498 4e75	rts	
0000e49a 08a800000022	bclr	#0,obStatus(a0)
0000e4a0 7608	moveq	#8,d3
0000e4a2 61006a36	bsr.w	ObjHitWallRight
0000e4a6 4a41	tst.w	d1
0000e4a8 6a12	bpl.s	locret_E4BC
0000e4aa 117c00080028	move.b	#8,obSubtype(a0)
0000e4b0 117c0003001c	move.b	#3,obAnim(a0)
0000e4b6 317c00000010	move.w	#0,obVelX(a0)
0000e4bc 4e75	rts	
0000e4be 4e75	rts	
0000e4c0 6000f17e	bra.w	DeleteObject
0000e4e0 7000	moveq	#0,d0
0000e4e2 10280024	move.b	obRoutine(a0),d0
0000e4e6 323b0006	move.w	Flame_Index(pc,d0.w),d1
0000e4ea 4efb1002	jmp	Flame_Index(pc,d1.w)
0000e4f2 54280024	addq.b	#2,obRoutine(a0)
0000e4f6 217c0000e5f40004	move.l	#Map_Flame,obMap(a0)
0000e4fe 317c83d90002	move.w	#ArtTile_SBZ_Flamethrower|Tile_Prio,obGfx(a0)
0000e504 002800040001	ori.b	#4,obRender(a0)
0000e50a 117c00010018	move.b	#1,obPriority(a0)
0000e510 3168000c0030	move.w	obY(a0),objoff_30(a0)
0000e516 117c000c0019	move.b	#$C,obActWid(a0)
0000e51c 10280028	move.b	obSubtype(a0),d0
0000e520 024000f0	andi.w	#$F0,d0
0000e524 d040	add.w	d0,d0
0000e526 31400030	move.w	d0,objoff_30(a0)
0000e52a 31400032	move.w	d0,objoff_32(a0)
0000e52e 10280028	move.b	obSubtype(a0),d0
0000e532 0240000f	andi.w	#$F,d0
0000e536 eb48	lsl.w	#5,d0
0000e538 31400034	move.w	d0,objoff_34(a0)
0000e53c 117c000a0036	move.b	#$A,objoff_36(a0)
0000e542 082800010022	btst	#1,obStatus(a0)
0000e548 670c	beq.s	Flame_Action
0000e54a 117c0002001c	move.b	#2,obAnim(a0)
0000e550 117c00150036	move.b	#$15,objoff_36(a0)
0000e556 53680030	subq.w	#1,objoff_30(a0)
0000e55a 6a1e	bpl.s	loc_E57A
0000e55c 316800340030	move.w	objoff_34(a0),objoff_30(a0)
0000e562 08680000001c	bchg	#0,obAnim(a0)
0000e568 6710	beq.s	loc_E57A
0000e56a 316800320030	move.w	objoff_32(a0),objoff_30(a0)
0000e570 303c00b3	move.w	#sfx_Flamethrower,d0
0000e574 4eb90000139c	jsr	(QueueSound2).l
0000e57a 43f90000e5bc	lea	(Ani_Flame).l,a1
0000e580 6100c196	bsr.w	AnimateSprite
0000e584 117c00000020	move.b	#0,obColType(a0)
0000e58a 10280036	move.b	objoff_36(a0),d0
0000e58e b028001a	cmp.b	obFrame(a0),d0
0000e592 6606	bne.s	Flame_ChkDel
0000e594 117c00a30020	move.b	#$A3,obColType(a0)
0000e59a 30280008	move.w	obX(a0),d0
0000e59e 0240ff80	andi.w	#$FF80,d0
0000e5a2 3238f700	move.w	(v_screenposx).w,d1
0000e5a6 04410080	subi.w	#128,d1
0000e5aa 0241ff80	andi.w	#$FF80,d1
0000e5ae 9041	sub.w	d1,d0
0000e5b0 0c400280	cmpi.w	#128+320+192,d0
0000e5b4 6200f08a	bhi.w	DeleteObject
0000e5b8 6000f04a	bra.w	DisplaySprite
0000e7d0 7000	moveq	#0,d0
0000e7d2 10280024	move.b	obRoutine(a0),d0
0000e7d6 323b0006	move.w	Brick_Index(pc,d0.w),d1
0000e7da 4efb1002	jmp	Brick_Index(pc,d1.w)
0000e7e2 54280024	addq.b	#2,obRoutine(a0)
0000e7e6 117c000f0016	move.b	#$F,obHeight(a0)
0000e7ec 117c000f0017	move.b	#$F,obWidth(a0)
0000e7f2 217c0000e9040004	move.l	#Map_Brick,obMap(a0)
0000e7fa 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
0000e800 117c00040001	move.b	#4,obRender(a0)
0000e806 117c00030018	move.b	#3,obPriority(a0)
0000e80c 117c00100019	move.b	#$10,obActWid(a0)
0000e812 3168000c0030	move.w	obY(a0),brick_origY(a0)
0000e818 317c05c00032	move.w	#$5C0,objoff_32(a0)
0000e81e 4a280001	tst.b	obRender(a0)
0000e822 6a28	bpl.s	.chkdel
0000e824 7000	moveq	#0,d0
0000e826 10280028	move.b	obSubtype(a0),d0
0000e82a 02400007	andi.w	#7,d0
0000e82e d040	add.w	d0,d0
0000e830 323b003e	move.w	Brick_TypeIndex(pc,d0.w),d1
0000e834 4ebb103a	jsr	Brick_TypeIndex(pc,d1.w)
0000e838 323c001b	move.w	#$1B,d1
0000e83c 343c0010	move.w	#$10,d2
0000e840 363c0011	move.w	#$11,d3
0000e844 38280008	move.w	obX(a0),d4
0000e848 6100118c	bsr.w	SolidObject
0000e84c 6100edb6	bsr.w	DisplaySprite
0000e850 30280008	move.w	obX(a0),d0
0000e854 0240ff80	andi.w	#$FF80,d0
0000e858 3238f700	move.w	(v_screenposx).w,d1
0000e85c 04410080	subi.w	#128,d1
0000e860 0241ff80	andi.w	#$FF80,d1
0000e864 9041	sub.w	d1,d0
0000e866 0c400280	cmpi.w	#128+320+192,d0
0000e86a 6200edd4	bhi.w	DeleteObject
0000e86e 4e75	rts	
0000e87a 4e75	rts	
0000e87c 3038d008	move.w	(v_player+obX).w,d0
0000e880 90680008	sub.w	obX(a0),d0
0000e884 6402	bcc.s	loc_E888
0000e886 4440	neg.w	d0
0000e888 0c400090	cmpi.w	#$90,d0
0000e88c 6406	bhs.s	Brick_Type01
0000e88e 117c00030028	move.b	#3,obSubtype(a0)
0000e894 7000	moveq	#0,d0
0000e896 1038fe74	move.b	(v_oscillate+$16).w,d0
0000e89a 082800030028	btst	#3,obSubtype(a0)
0000e8a0 6706	beq.s	loc_E8A8
0000e8a2 4440	neg.w	d0
0000e8a4 06400010	addi.w	#$10,d0
0000e8a8 32280030	move.w	brick_origY(a0),d1
0000e8ac 9240	sub.w	d0,d1
0000e8ae 3141000c	move.w	d1,obY(a0)
0000e8b2 4e75	rts	
0000e8b4 6100ed28	bsr.w	SpeedToPos
0000e8b8 066800180012	addi.w	#$18,obVelY(a0)
0000e8be 61006558	bsr.w	ObjFloorDist
0000e8c2 4a41	tst.w	d1
0000e8c4 6a000028	bpl.w	locret_E8EE
0000e8c8 d368000c	add.w	d1,obY(a0)
0000e8cc 42680012	clr.w	obVelY(a0)
0000e8d0 3168000c0030	move.w	obY(a0),brick_origY(a0)
0000e8d6 117c00040028	move.b	#4,obSubtype(a0)
0000e8dc 3011	move.w	(a1),d0
0000e8de 024003ff	andi.w	#$3FF,d0
0000e8e2 0c4002e8	cmpi.w	#$2E8,d0
0000e8e6 6406	bcc.s	locret_E8EE
0000e8e8 117c00000028	move.b	#0,obSubtype(a0)
0000e8ee 4e75	rts	
0000e8f0 7000	moveq	#0,d0
0000e8f2 1038fe70	move.b	(v_oscillate+$12).w,d0
0000e8f6 e648	lsr.w	#3,d0
0000e8f8 32280030	move.w	brick_origY(a0),d1
0000e8fc 9240	sub.w	d0,d1
0000e8fe 3141000c	move.w	d1,obY(a0)
0000e902 4e75	rts	
0000e90c 7000	moveq	#0,d0
0000e90e 10280024	move.b	obRoutine(a0),d0
0000e912 323b0006	move.w	Light_Index(pc,d0.w),d1
0000e916 4efb1002	jmp	Light_Index(pc,d1.w)
0000e91e 54280024	addq.b	#2,obRoutine(a0)
0000e922 217c0000e9820004	move.l	#Map_Light,obMap(a0)
0000e92a 317c00000002	move.w	#ArtTile_Level,obGfx(a0)
0000e930 117c00040001	move.b	#4,obRender(a0)
0000e936 117c00100019	move.b	#$10,obActWid(a0)
0000e93c 117c00060018	move.b	#6,obPriority(a0)
0000e942 5328001e	subq.b	#1,obTimeFrame(a0)
0000e946 6a18	bpl.s	.chkdel
0000e948 117c0007001e	move.b	#7,obTimeFrame(a0)
0000e94e 5228001a	addq.b	#1,obFrame(a0)
0000e952 0c280006001a	cmpi.b	#6,obFrame(a0)
0000e958 6506	blo.s	.chkdel
0000e95a 117c0000001a	move.b	#0,obFrame(a0)
0000e960 30280008	move.w	obX(a0),d0
0000e964 0240ff80	andi.w	#$FF80,d0
0000e968 3238f700	move.w	(v_screenposx).w,d1
0000e96c 04410080	subi.w	#128,d1
0000e970 0241ff80	andi.w	#$FF80,d1
0000e974 9041	sub.w	d1,d0
0000e976 0c400280	cmpi.w	#128+320+192,d0
0000e97a 6200ecc4	bhi.w	DeleteObject
0000e97e 6000ec84	bra.w	DisplaySprite
0000e9d0 7000	moveq	#0,d0
0000e9d2 10280024	move.b	obRoutine(a0),d0
0000e9d6 323b0006	move.w	Bump_Index(pc,d0.w),d1
0000e9da 4efb1002	jmp	Bump_Index(pc,d1.w)
0000e9e2 54280024	addq.b	#2,obRoutine(a0)
0000e9e6 217c0000eb000004	move.l	#Map_Bump,obMap(a0)
0000e9ee 317c03800002	move.w	#ArtTile_SYZ_Bumper,obGfx(a0)
0000e9f4 117c00040001	move.b	#4,obRender(a0)
0000e9fa 117c00100019	move.b	#$10,obActWid(a0)
0000ea00 117c00010018	move.b	#1,obPriority(a0)
0000ea06 117c00d70020	move.b	#$D7,obColType(a0)
0000ea0c 4a280021	tst.b	obColProp(a0)
0000ea10 6700009e	beq.w	.display
0000ea14 42280021	clr.b	obColProp(a0)
0000ea18 43f8d000	lea	(v_player).w,a1
0000ea1c 32280008	move.w	obX(a0),d1
0000ea20 3428000c	move.w	obY(a0),d2
0000ea24 92690008	sub.w	obX(a1),d1
0000ea28 9469000c	sub.w	obY(a1),d2
0000ea2c 4eb900002ca8	jsr	(CalcAngle).l
0000ea32 4eb9000029da	jsr	(CalcSine).l
0000ea38 c3fcf900	muls.w	#-$700,d1
0000ea3c e081	asr.l	#8,d1
0000ea3e 33410010	move.w	d1,obVelX(a1)
0000ea42 c1fcf900	muls.w	#-$700,d0
0000ea46 e080	asr.l	#8,d0
0000ea48 33400012	move.w	d0,obVelY(a1)
0000ea4c 08e900010022	bset	#1,obStatus(a1)
0000ea52 08a900040022	bclr	#4,obStatus(a1)
0000ea58 08a900050022	bclr	#5,obStatus(a1)
0000ea5e 4229003c	clr.b	jumping(a1)
0000ea62 117c0001001c	move.b	#1,obAnim(a0)
0000ea68 303c00b4	move.w	#sfx_Bumper,d0
0000ea6c 4eb90000139c	jsr	(QueueSound2).l
0000ea72 45f8fc00	lea	(v_objstate).w,a2
0000ea76 7000	moveq	#0,d0
0000ea78 10280023	move.b	obRespawnNo(a0),d0
0000ea7c 670c	beq.s	.addscore
0000ea7e 0c32008a0002	cmpi.b	#$8A,2(a2,d0.w)
0000ea84 642a	bhs.s	.display
0000ea86 52320002	addq.b	#1,2(a2,d0.w)
0000ea8a 7001	moveq	#1,d0
0000ea8c 4eb90001c68c	jsr	(AddPoints).l
0000ea92 6100eff8	bsr.w	FindFreeObj
0000ea96 6618	bne.s	.display
0000ea9e 336800080008	move.w	obX(a0),obX(a1)
0000eaa4 3368000c000c	move.w	obY(a0),obY(a1)
0000eaaa 137c0004001a	move.b	#4,obFrame(a1)
0000eab0 43f90000eaf0	lea	(Ani_Bump).l,a1
0000eab6 6100bc60	bsr.w	AnimateSprite
0000eaba 30280008	move.w	obX(a0),d0
0000eabe 0240ff80	andi.w	#$FF80,d0
0000eac2 3238f700	move.w	(v_screenposx).w,d1
0000eac6 04410080	subi.w	#128,d1
0000eaca 0241ff80	andi.w	#$FF80,d1
0000eace 9041	sub.w	d1,d0
0000ead0 0c400280	cmpi.w	#128+320+192,d0
0000ead4 6204	bhi.s	.resetcount
0000ead6 6000eb2c	bra.w	DisplaySprite
0000eada 45f8fc00	lea	(v_objstate).w,a2
0000eade 7000	moveq	#0,d0
0000eae0 10280023	move.b	obRespawnNo(a0),d0
0000eae4 6706	beq.s	.delete
0000eae6 08b200070002	bclr	#7,2(a2,d0.w)
0000eaec 6000eb52	bra.w	DeleteObject
0000eb28 7000	moveq	#0,d0
0000eb2a 10280024	move.b	obRoutine(a0),d0
0000eb2e 323b0034	move.w	Sign_Index(pc,d0.w),d1
0000eb32 4ebb1030	jsr	Sign_Index(pc,d1.w)
0000eb36 43f90000ed1c	lea	(Ani_Sign).l,a1
0000eb3c 6100bbda	bsr.w	AnimateSprite
0000eb40 6100eac2	bsr.w	DisplaySprite
0000eb44 30280008	move.w	obX(a0),d0
0000eb48 0240ff80	andi.w	#$FF80,d0
0000eb4c 3238f700	move.w	(v_screenposx).w,d1
0000eb50 04410080	subi.w	#128,d1
0000eb54 0241ff80	andi.w	#$FF80,d1
0000eb58 9041	sub.w	d1,d0
0000eb5a 0c400280	cmpi.w	#128+320+192,d0
0000eb5e 6200eae0	bhi.w	DeleteObject
0000eb62 4e75	rts	
0000eb6e 54280024	addq.b	#2,obRoutine(a0)
0000eb72 217c0000ed380004	move.l	#Map_Sign,obMap(a0)
0000eb7a 317c06800002	move.w	#ArtTile_Signpost,obGfx(a0)
0000eb80 117c00040001	move.b	#4,obRender(a0)
0000eb86 117c00180019	move.b	#$18,obActWid(a0)
0000eb8c 117c00040018	move.b	#4,obPriority(a0)
0000eb92 3038d008	move.w	(v_player+obX).w,d0
0000eb96 90680008	sub.w	obX(a0),d0
0000eb9a 651e	bcs.s	.notouch
0000eb9c 0c400020	cmpi.w	#$20,d0
0000eba0 6418	bhs.s	.notouch
0000eba2 303c00cf	move.w	#sfx_Signpost,d0
0000eba6 4eb900001396	jsr	(QueueSound1).l
0000ebac 4238fe1e	clr.b	(f_timecount).w
0000ebb0 31f8f72af728	move.w	(v_limitright2).w,(v_limitleft2).w
0000ebb6 54280024	addq.b	#2,obRoutine(a0)
0000ebba 4e75	rts	
0000ebbc 53680030	subq.w	#1,spintime(a0)
0000ebc0 6a16	bpl.s	.chksparkle
0000ebc2 317c003c0030	move.w	#60,spintime(a0)
0000ebc8 5228001c	addq.b	#1,obAnim(a0)
0000ebcc 0c280003001c	cmpi.b	#3,obAnim(a0)
0000ebd2 6604	bne.s	.chksparkle
0000ebd4 54280024	addq.b	#2,obRoutine(a0)
0000ebd8 53680032	subq.w	#1,sparkletime(a0)
0000ebdc 6a64	bpl.s	.fail
0000ebde 317c000b0032	move.w	#$B,sparkletime(a0)
0000ebe4 7000	moveq	#0,d0
0000ebe6 10280034	move.b	sparkle_id(a0),d0
0000ebea 54280034	addq.b	#2,sparkle_id(a0)
0000ebee 0228000e0034	andi.b	#$E,sparkle_id(a0)
0000ebf4 45fb004e	lea	Sign_SparkPos(pc,d0.w),a2
0000ebf8 6100ee92	bsr.w	FindFreeObj
0000ebfc 6644	bne.s	.fail
0000ec04 137c00060024	move.b	#6,obRoutine(a1)
0000ec0a 101a	move.b	(a2)+,d0
0000ec0c 4880	ext.w	d0
0000ec0e d0680008	add.w	obX(a0),d0
0000ec12 33400008	move.w	d0,obX(a1)
0000ec16 101a	move.b	(a2)+,d0
0000ec18 4880	ext.w	d0
0000ec1a d068000c	add.w	obY(a0),d0
0000ec1e 3340000c	move.w	d0,obY(a1)
0000ec22 237c00009f920004	move.l	#Map_Ring,obMap(a1)
0000ec2a 337c27b20002	move.w	#ArtTile_Ring|Tile_Pal2,obGfx(a1)
0000ec30 137c00040001	move.b	#4,obRender(a1)
0000ec36 137c00020018	move.b	#2,obPriority(a1)
0000ec3c 137c00080019	move.b	#8,obActWid(a1)
0000ec42 4e75	rts	
0000ec54 4a78fe08	tst.w	(v_debuguse).w
0000ec58 66000094	bne.w	locret_ECEE
0000ec5c 08380001d022	btst	#1,(v_player+obStatus).w
0000ec62 660c	bne.s	loc_EC70
0000ec64 11fc0001f7cc	move.b	#1,(f_lockctrl).w
0000ec6a 31fc0800f602	move.w	#btnR<<8,(v_jpadhold2).w
0000ec70 4a38d000	tst.b	(v_player+obID).w
0000ec74 6710	beq.s	loc_EC86
0000ec76 3038d008	move.w	(v_player+obX).w,d0
0000ec7a 3238f72a	move.w	(v_limitright2).w,d1
0000ec7e 06410128	addi.w	#$128,d1
0000ec82 b041	cmp.w	d1,d0
0000ec84 6568	blo.s	locret_ECEE
0000ec86 54280024	addq.b	#2,obRoutine(a0)
0000ec8a 4a38d5c0	tst.b	(v_endcard).w
0000ec8e 665e	bne.s	locret_ECEE
0000ec90 31f8f72af728	move.w	(v_limitright2).w,(v_limitleft2).w
0000ec96 4238fe2d	clr.b	(v_invinc).w
0000ec9a 4238fe1e	clr.b	(f_timecount).w
0000ec9e 11fc003ad5c0	move.b	#id_GotThroughCard,(v_endcard).w
0000eca4 7010	moveq	#plcid_TitleCard,d0
0000eca6 4eb9000015b2	jsr	(NewPLC).l
0000ecac 11fc0001f7d6	move.b	#1,(f_endactbonus).w
0000ecb2 7000	moveq	#0,d0
0000ecb4 1038fe23	move.b	(v_timemin).w,d0
0000ecb8 c0fc003c	mulu.w	#60,d0
0000ecbc 7200	moveq	#0,d1
0000ecbe 1238fe24	move.b	(v_timesec).w,d1
0000ecc2 d041	add.w	d1,d0
0000ecc4 80fc000f	divu.w	#15,d0
0000ecc8 7214	moveq	#$14,d1
0000ecca b041	cmp.w	d1,d0
0000eccc 6502	blo.s	.hastimebonus
0000ecce 3001	move.w	d1,d0
0000ecd0 d040	add.w	d0,d0
0000ecd2 31fb001cf7d2	move.w	TimeBonuses(pc,d0.w),(v_timebonus).w
0000ecd8 3038fe20	move.w	(v_rings).w,d0
0000ecdc c0fc000a	mulu.w	#10,d0
0000ece0 31c0f7d4	move.w	d0,(v_ringbonus).w
0000ece4 303c008e	move.w	#bgm_GotThrough,d0
0000ece8 4eb90000139c	jsr	(QueueSound2).l
0000ecee 4e75	rts	
0000ed1a 4e75	rts	
0000ed84 7000	moveq	#0,d0
0000ed86 10280024	move.b	obRoutine(a0),d0
0000ed8a 323b000a	move.w	GMake_Index(pc,d0.w),d1
0000ed8e 4ebb1006	jsr	GMake_Index(pc,d1.w)
0000ed92 60000204	bra.w	Geyser_ChkDel
0000eda2 54280024	addq.b	#2,obRoutine(a0)
0000eda6 217c0000f24a0004	move.l	#Map_Geyser,obMap(a0)
0000edae 317ce3a80002	move.w	#ArtTile_MZ_Lava|Tile_Pal4|Tile_Prio,obGfx(a0)
0000edb4 117c00040001	move.b	#4,obRender(a0)
0000edba 117c00010018	move.b	#1,obPriority(a0)
0000edc0 117c00380019	move.b	#$38,obActWid(a0)
0000edc6 317c00780034	move.w	#120,gmake_time(a0)
0000edcc 53680032	subq.w	#1,gmake_timer(a0)
0000edd0 6a1e	bpl.s	.cancel
0000edd2 316800340032	move.w	gmake_time(a0),gmake_timer(a0)
0000edd8 3038d00c	move.w	(v_player+obY).w,d0
0000eddc 3228000c	move.w	obY(a0),d1
0000ede0 b041	cmp.w	d1,d0
0000ede2 640c	bhs.s	.cancel
0000ede4 04410170	subi.w	#$170,d1
0000ede8 b041	cmp.w	d1,d0
0000edea 6504	blo.s	.cancel
0000edec 54280024	addq.b	#2,obRoutine(a0)
0000edf0 4e75	rts	
0000edf2 54280024	addq.b	#2,obRoutine(a0)
0000edf6 6100ecaa	bsr.w	FindNextFreeObj
0000edfa 661c	bne.s	.fail
0000ee02 336800080008	move.w	obX(a0),obX(a1)
0000ee08 3368000c000c	move.w	obY(a0),obY(a1)
0000ee0e 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000ee14 2348003c	move.l	a0,gmake_parent(a1)
0000ee18 117c0001001c	move.b	#1,obAnim(a0)
0000ee1e 4a280028	tst.b	obSubtype(a0)
0000ee22 6708	beq.s	.isgeyser
0000ee24 117c0004001c	move.b	#4,obAnim(a0)
0000ee2a 601e	bra.s	GMake_Display
0000ee2c 2268003c	movea.l	gmake_parent(a0),a1
0000ee30 08e900010022	bset	#1,obStatus(a1)
0000ee36 337cfa800012	move.w	#-$580,obVelY(a1)
0000ee3c 600c	bra.s	GMake_Display
0000ee3e 4a280028	tst.b	obSubtype(a0)
0000ee42 6706	beq.s	GMake_Display
0000ee44 54280024	addq.b	#2,obRoutine(a0)
0000ee48 4e75	rts	
0000ee4a 43f90000f214	lea	(Ani_Geyser).l,a1
0000ee50 6100b8c6	bsr.w	AnimateSprite
0000ee54 6100e7ae	bsr.w	DisplaySprite
0000ee58 4e75	rts	
0000ee5a 117c0000001c	move.b	#0,obAnim(a0)
0000ee60 117c00020024	move.b	#2,obRoutine(a0)
0000ee66 4a280028	tst.b	obSubtype(a0)
0000ee6a 6700e7d4	beq.w	DeleteObject
0000ee6e 4e75	rts	
0000ee70 7000	moveq	#0,d0
0000ee72 10280024	move.b	obRoutine(a0),d0
0000ee76 323b000a	move.w	Geyser_Index(pc,d0.w),d1
0000ee7a 4ebb1006	jsr	Geyser_Index(pc,d1.w)
0000ee7e 6000e784	bra.w	DisplaySprite
0000ee8e 54280024	addq.b	#2,obRoutine(a0)
0000ee92 3168000c0030	move.w	obY(a0),objoff_30(a0)
0000ee98 4a280028	tst.b	obSubtype(a0)
0000ee9c 6706	beq.s	.isgeyser
0000ee9e 04680250000c	subi.w	#$250,obY(a0)
0000eea4 7000	moveq	#0,d0
0000eea6 10280028	move.b	obSubtype(a0),d0
0000eeaa d040	add.w	d0,d0
0000eeac 317b00dc0012	move.w	Geyser_Speeds(pc,d0.w),obVelY(a0)
0000eeb2 2248	movea.l	a0,a1
0000eeb4 7201	moveq	#1,d1
0000eeb6 6108	bsr.s	.makelava
0000eeb8 6056	bra.s	.activate
0000eeba 6100ebe6	bsr.w	FindNextFreeObj
0000eebe 664a	bne.s	.fail
0000eec6 237c0000f24a0004	move.l	#Map_Geyser,obMap(a1)
0000eece 337c63a80002	move.w	#ArtTile_MZ_Lava|Tile_Pal4,obGfx(a1)
0000eed4 137c00040001	move.b	#4,obRender(a1)
0000eeda 137c00200019	move.b	#$20,obActWid(a1)
0000eee0 336800080008	move.w	obX(a0),obX(a1)
0000eee6 3368000c000c	move.w	obY(a0),obY(a1)
0000eeec 136800280028	move.b	obSubtype(a0),obSubtype(a1)
0000eef2 137c00010018	move.b	#1,obPriority(a1)
0000eef8 137c0005001c	move.b	#5,obAnim(a1)
0000eefe 4a280028	tst.b	obSubtype(a0)
0000ef02 6706	beq.s	.fail
0000ef04 137c0002001c	move.b	#2,obAnim(a1)
0000ef0a 51c9ffae	dbf	d1,.loop
0000ef0e 4e75	rts	
0000ef10 06690060000c	addi.w	#$60,obY(a1)
0000ef16 336800300030	move.w	objoff_30(a0),objoff_30(a1)
0000ef1c 066900600030	addi.w	#$60,objoff_30(a1)
0000ef22 137c00930020	move.b	#$93,obColType(a1)
0000ef28 137c00800016	move.b	#$80,obHeight(a1)
0000ef2e 08e900040001	bset	#4,obRender(a1)
0000ef34 58290024	addq.b	#4,obRoutine(a1)
0000ef38 2348003c	move.l	a0,objoff_3C(a1)
0000ef3c 4a280028	tst.b	obSubtype(a0)
0000ef40 672e	beq.s	.sound
0000ef42 7200	moveq	#0,d1
0000ef44 6100ff74	bsr.w	.loop
0000ef48 54290024	addq.b	#2,obRoutine(a1)
0000ef4c 08e900040002	bset	#4,obGfx(a1)
0000ef52 06690100000c	addi.w	#$100,obY(a1)
0000ef58 137c00000018	move.b	#0,obPriority(a1)
0000ef5e 336800300030	move.w	objoff_30(a0),objoff_30(a1)
0000ef64 2368003c003c	move.l	objoff_3C(a0),objoff_3C(a1)
0000ef6a 117c00000028	move.b	#0,obSubtype(a0)
0000ef70 303c00c8	move.w	#sfx_Burning,d0
0000ef74 4eb90000139c	jsr	(QueueSound2).l
0000ef7a 7000	moveq	#0,d0
0000ef7c 10280028	move.b	obSubtype(a0),d0
0000ef80 d040	add.w	d0,d0
0000ef82 323b0034	move.w	Geyser_Types(pc,d0.w),d1
0000ef86 4ebb1030	jsr	Geyser_Types(pc,d1.w)
0000ef8a 6100e652	bsr.w	SpeedToPos
0000ef8e 43f90000f214	lea	(Ani_Geyser).l,a1
0000ef94 6100b782	bsr.w	AnimateSprite
0000ef98 30280008	move.w	obX(a0),d0
0000ef9c 0240ff80	andi.w	#$FF80,d0
0000efa0 3238f700	move.w	(v_screenposx).w,d1
0000efa4 04410080	subi.w	#128,d1
0000efa8 0241ff80	andi.w	#$FF80,d1
0000efac 9041	sub.w	d1,d0
0000efae 0c400280	cmpi.w	#128+320+192,d0
0000efb2 6200e68c	bhi.w	DeleteObject
0000efb6 4e75	rts	
0000efbc 066800180012	addi.w	#$18,obVelY(a0)
0000efc2 30280030	move.w	objoff_30(a0),d0
0000efc6 b068000c	cmp.w	obY(a0),d0
0000efca 640e	bhs.s	locret_EFDA
0000efcc 58280024	addq.b	#4,obRoutine(a0)
0000efd0 2268003c	movea.l	objoff_3C(a0),a1
0000efd4 137c0003001c	move.b	#3,obAnim(a1)
0000efda 4e75	rts	
0000efdc 066800180012	addi.w	#$18,obVelY(a0)
0000efe2 30280030	move.w	objoff_30(a0),d0
0000efe6 b068000c	cmp.w	obY(a0),d0
0000efea 640e	bhs.s	locret_EFFA
0000efec 58280024	addq.b	#4,obRoutine(a0)
0000eff0 2268003c	movea.l	objoff_3C(a0),a1
0000eff4 137c0001001c	move.b	#1,obAnim(a1)
0000effa 4e75	rts	
0000effc 2268003c	movea.l	objoff_3C(a0),a1
0000f000 0c2900060024	cmpi.b	#6,obRoutine(a1)
0000f006 67000052	beq.w	Geyser_Delete
0000f00a 3029000c	move.w	obY(a1),d0
0000f00e 06400060	addi.w	#$60,d0
0000f012 3140000c	move.w	d0,obY(a0)
0000f016 90680030	sub.w	objoff_30(a0),d0
0000f01a 4440	neg.w	d0
0000f01c 7208	moveq	#8,d1
0000f01e 0c400040	cmpi.w	#$40,d0
0000f022 6c02	bge.s	loc_F026
0000f024 720b	moveq	#$B,d1
0000f026 0c400080	cmpi.w	#$80,d0
0000f02a 6f02	ble.s	loc_F02E
0000f02c 720e	moveq	#$E,d1
0000f02e 5328001e	subq.b	#1,obTimeFrame(a0)
0000f032 6a18	bpl.s	loc_F04C
0000f034 117c0007001e	move.b	#7,obTimeFrame(a0)
0000f03a 5228001b	addq.b	#1,obAniFrame(a0)
0000f03e 0c280002001b	cmpi.b	#2,obAniFrame(a0)
0000f044 6506	blo.s	loc_F04C
0000f046 117c0000001b	move.b	#0,obAniFrame(a0)
0000f04c 1028001b	move.b	obAniFrame(a0),d0
0000f050 d001	add.b	d1,d0
0000f052 1140001a	move.b	d0,obFrame(a0)
0000f056 6000ff40	bra.w	Geyser_ChkDel
0000f05a 6000e5e4	bra.w	DeleteObject
0000f05e 7000	moveq	#0,d0
0000f060 10280024	move.b	obRoutine(a0),d0
0000f064 323b0006	move.w	LWall_Index(pc,d0.w),d1
0000f068 4efb1002	jmp	LWall_Index(pc,d1.w)
0000f076 58280024	addq.b	#4,obRoutine(a0)
0000f07a 2248	movea.l	a0,a1
0000f07c 7201	moveq	#1,d1
0000f07e 6006	bra.s	.make
0000f080 6100ea20	bsr.w	FindNextFreeObj
0000f084 6642	bne.s	.fail
0000f08c 237c0000f52e0004	move.l	#Map_LWall,obMap(a1)
0000f094 337c63a80002	move.w	#ArtTile_MZ_Lava|Tile_Pal4,obGfx(a1)
0000f09a 137c00040001	move.b	#4,obRender(a1)
0000f0a0 137c00500019	move.b	#$50,obActWid(a1)
0000f0a6 336800080008	move.w	obX(a0),obX(a1)
0000f0ac 3368000c000c	move.w	obY(a0),obY(a1)
0000f0b2 137c00010018	move.b	#1,obPriority(a1)
0000f0b8 137c0000001c	move.b	#0,obAnim(a1)
0000f0be 137c00940020	move.b	#$94,obColType(a1)
0000f0c4 2348003c	move.l	a0,objoff_3C(a1)
0000f0c8 51c9ffb6	dbf	d1,.loop
0000f0cc 5c290024	addq.b	#6,obRoutine(a1)
0000f0d0 137c0004001a	move.b	#4,obFrame(a1)
0000f0d6 3038d008	move.w	(v_player+obX).w,d0
0000f0da 90680008	sub.w	obX(a0),d0
0000f0de 6402	bcc.s	.rangechk
0000f0e0 4440	neg.w	d0
0000f0e2 0c4000c0	cmpi.w	#$C0,d0
0000f0e6 641a	bhs.s	.movewall
0000f0e8 3038d00c	move.w	(v_player+obY).w,d0
0000f0ec 9068000c	sub.w	obY(a0),d0
0000f0f0 6402	bcc.s	.rangechk2
0000f0f2 4440	neg.w	d0
0000f0f4 0c400060	cmpi.w	#$60,d0
0000f0f8 6408	bhs.s	.movewall
0000f0fa 117c00010036	move.b	#1,lwall_flag(a0)
0000f100 6010	bra.s	LWall_Solid
0000f102 4a280036	tst.b	lwall_flag(a0)
0000f106 670a	beq.s	LWall_Solid
0000f108 317c01800010	move.w	#$180,obVelX(a0)
0000f10e 55280024	subq.b	#2,obRoutine(a0)
0000f112 323c002b	move.w	#$2B,d1
0000f116 343c0018	move.w	#$18,d2
0000f11a 3602	move.w	d2,d3
0000f11c 5243	addq.w	#1,d3
0000f11e 38280008	move.w	obX(a0),d4
0000f122 10280024	move.b	obRoutine(a0),d0
0000f126 3f00	move.w	d0,-(sp)
0000f128 610008ac	bsr.w	SolidObject
0000f12c 301f	move.w	(sp)+,d0
0000f12e 11400024	move.b	d0,obRoutine(a0)
0000f132 0c6806a00008	cmpi.w	#$6A0,obX(a0)
0000f138 6608	bne.s	.animate
0000f13a 42680010	clr.w	obVelX(a0)
0000f13e 42280036	clr.b	lwall_flag(a0)
0000f142 43f90000f242	lea	(Ani_LWall).l,a1
0000f148 6100b5ce	bsr.w	AnimateSprite
0000f14c 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
0000f152 6404	bhs.s	.rangechk
0000f154 6100e488	bsr.w	SpeedToPos
0000f158 6100e4aa	bsr.w	DisplaySprite
0000f15c 4a280036	tst.b	lwall_flag(a0)
0000f160 661c	bne.s	.moving
0000f162 30280008	move.w	obX(a0),d0
0000f166 0240ff80	andi.w	#$FF80,d0
0000f16a 3238f700	move.w	(v_screenposx).w,d1
0000f16e 04410080	subi.w	#128,d1
0000f172 0241ff80	andi.w	#$FF80,d1
0000f176 9041	sub.w	d1,d0
0000f178 0c400280	cmpi.w	#128+320+192,d0
0000f17c 6202	bhi.s	.chkgone
0000f17e 4e75	rts	
0000f180 45f8fc00	lea	(v_objstate).w,a2
0000f184 7000	moveq	#0,d0
0000f186 10280023	move.b	obRespawnNo(a0),d0
0000f18a 08b200070002	bclr	#7,2(a2,d0.w)
0000f190 117c00080024	move.b	#8,obRoutine(a0)
0000f196 4e75	rts	
0000f198 2268003c	movea.l	objoff_3C(a0),a1
0000f19c 0c2900080024	cmpi.b	#8,obRoutine(a1)
0000f1a2 6710	beq.s	LWall_Delete
0000f1a4 316900080008	move.w	obX(a1),obX(a0)
0000f1aa 046800800008	subi.w	#$80,obX(a0)
0000f1b0 6000e452	bra.w	DisplaySprite
0000f1b4 6000e48a	bra.w	DeleteObject
0000f1b8 7000	moveq	#0,d0
0000f1ba 10280024	move.b	obRoutine(a0),d0
0000f1be 323b0006	move.w	LTag_Index(pc,d0.w),d1
0000f1c2 4efb1002	jmp	LTag_Index(pc,d1.w)
0000f1ce 54280024	addq.b	#2,obRoutine(a0)
0000f1d2 7000	moveq	#0,d0
0000f1d4 10280028	move.b	obSubtype(a0),d0
0000f1d8 117b00f00020	move.b	LTag_ColTypes(pc,d0.w),obColType(a0)
0000f1de 217c0000f2100004	move.l	#Map_LTag,obMap(a0)
0000f1e6 117c00840001	move.b	#$84,obRender(a0)
0000f1ec 30280008	move.w	obX(a0),d0
0000f1f0 0240ff80	andi.w	#$FF80,d0
0000f1f4 3238f700	move.w	(v_screenposx).w,d1
0000f1f8 04410080	subi.w	#$80,d1
0000f1fc 0241ff80	andi.w	#$FF80,d1
0000f200 9041	sub.w	d1,d0
0000f202 6b00e43c	bmi.w	DeleteObject
0000f206 0c400280	cmpi.w	#$280,d0
0000f20a 6200e434	bhi.w	DeleteObject
0000f20e 4e75	rts	
0000f61a 7000	moveq	#0,d0
0000f61c 10280024	move.b	obRoutine(a0),d0
0000f620 323b0006	move.w	Moto_Index(pc,d0.w),d1
0000f624 4efb1002	jmp	Moto_Index(pc,d1.w)
0000f630 217c0000f7a00004	move.l	#Map_Moto,obMap(a0)
0000f638 317c04f00002	move.w	#ArtTile_Moto_Bug,obGfx(a0)
0000f63e 117c00040001	move.b	#4,obRender(a0)
0000f644 117c00040018	move.b	#4,obPriority(a0)
0000f64a 117c00140019	move.b	#$14,obActWid(a0)
0000f650 4a28001c	tst.b	obAnim(a0)
0000f654 6636	bne.s	.smoke
0000f656 117c000e0016	move.b	#$E,obHeight(a0)
0000f65c 117c00080017	move.b	#8,obWidth(a0)
0000f662 117c000c0020	move.b	#$C,obColType(a0)
0000f668 6100df48	bsr.w	ObjectFall
0000f66c 4eb900014e18	jsr	(ObjFloorDist).l
0000f672 4a41	tst.w	d1
0000f674 6a14	bpl.s	.notonfloor
0000f676 d368000c	add.w	d1,obY(a0)
0000f67a 317c00000012	move.w	#0,obVelY(a0)
0000f680 54280024	addq.b	#2,obRoutine(a0)
0000f684 086800000022	bchg	#0,obStatus(a0)
0000f68a 4e75	rts	
0000f68c 58280024	addq.b	#4,obRoutine(a0)
0000f690 600000de	bra.w	Moto_Animate
0000f694 7000	moveq	#0,d0
0000f696 10280025	move.b	ob2ndRout(a0),d0
0000f69a 323b0048	move.w	Moto_ActIndex(pc,d0.w),d1
0000f69e 4ebb1044	jsr	Moto_ActIndex(pc,d1.w)
0000f6a2 43f90000f782	lea	(Ani_Moto).l,a1
0000f6a8 6100b06e	bsr.w	AnimateSprite
0000f6ac 30280008	move.w	obX(a0),d0
0000f6b0 0240ff80	andi.w	#$FF80,d0
0000f6b4 3238f700	move.w	(v_screenposx).w,d1
0000f6b8 04410080	subi.w	#128,d1
0000f6bc 0241ff80	andi.w	#$FF80,d1
0000f6c0 9041	sub.w	d1,d0
0000f6c2 0c400280	cmpi.w	#128+320+192,d0
0000f6c6 62000006	bhi.w	.offscreen
0000f6ca 6000df38	bra.w	DisplaySprite
0000f6ce 45f8fc00	lea	(v_objstate).w,a2
0000f6d2 7000	moveq	#0,d0
0000f6d4 10280023	move.b	obRespawnNo(a0),d0
0000f6d8 6706	beq.s	.delete
0000f6da 08b200070002	bclr	#7,2(a2,d0.w)
0000f6e0 6000df5e	bra.w	DeleteObject
0000f6e8 53680030	subq.w	#1,.time(a0)
0000f6ec 6a1c	bpl.s	.wait
0000f6ee 54280025	addq.b	#2,ob2ndRout(a0)
0000f6f2 317cff000010	move.w	#-$100,obVelX(a0)
0000f6f8 117c0001001c	move.b	#1,obAnim(a0)
0000f6fe 086800000022	bchg	#0,obStatus(a0)
0000f704 6604	bne.s	.wait
0000f706 44680010	neg.w	obVelX(a0)
0000f70a 4e75	rts	
0000f70c 6100ded0	bsr.w	SpeedToPos
0000f710 4eb900014e18	jsr	(ObjFloorDist).l
0000f716 0c41fff8	cmpi.w	#-8,d1
0000f71a 6d3c	blt.s	.pause
0000f71c 0c41000c	cmpi.w	#$C,d1
0000f720 6c36	bge.s	.pause
0000f722 d368000c	add.w	d1,obY(a0)
0000f726 53280033	subq.b	#1,.smokedelay(a0)
0000f72a 6a2a	bpl.s	.nosmoke
0000f72c 117c000f0033	move.b	#$F,.smokedelay(a0)
0000f732 6100e358	bsr.w	FindFreeObj
0000f736 661e	bne.s	.nosmoke
0000f73e 336800080008	move.w	obX(a0),obX(a1)
0000f744 3368000c000c	move.w	obY(a0),obY(a1)
0000f74a 136800220022	move.b	obStatus(a0),obStatus(a1)
0000f750 137c0002001c	move.b	#2,obAnim(a1)
0000f756 4e75	rts	
0000f758 55280025	subq.b	#2,ob2ndRout(a0)
0000f75c 317c003b0030	move.w	#59,.time(a0)
0000f762 317c00000010	move.w	#0,obVelX(a0)
0000f768 117c0000001c	move.b	#0,obAnim(a0)
0000f76e 4e75	rts	
0000f770 43f90000f782	lea	(Ani_Moto).l,a1
0000f776 6100afa0	bsr.w	AnimateSprite
0000f77a 6000de88	bra.w	DisplaySprite
0000f77e 6000dec0	bra.w	DeleteObject
0000f806 4e75	rts	
0000f808 3038fe04	move.w	(v_framecount).w,d0
0000f80c d047	add.w	d7,d0
0000f80e 02400003	andi.w	#3,d0
0000f812 6622	bne.s	.nowallhit
0000f814 7600	moveq	#0,d3
0000f816 16280019	move.b	obActWid(a0),d3
0000f81a 4a680010	tst.w	obVelX(a0)
0000f81e 6b0c	bmi.s	.chkleftwall
0000f820 610056b8	bsr.w	ObjHitWallRight
0000f824 4a41	tst.w	d1
0000f826 6a0e	bpl.s	.nowallhit
0000f828 7001	moveq	#1,d0
0000f82a 4e75	rts	
0000f82c 4643	not.w	d3
0000f82e 6100583c	bsr.w	ObjHitWallLeft
0000f832 4a41	tst.w	d1
0000f834 6bf2	bmi.s	.wallhit
0000f836 7000	moveq	#0,d0
0000f838 4e75	rts	
0000f83a 7000	moveq	#0,d0
0000f83c 10280024	move.b	obRoutine(a0),d0
0000f840 323b0006	move.w	Yad_Index(pc,d0.w),d1
0000f844 4efb1002	jmp	Yad_Index(pc,d1.w)
0000f84c 217c0000f92e0004	move.l	#Map_Yad,obMap(a0)
0000f854 317c247b0002	move.w	#ArtTile_Yadrin|Tile_Pal2,obGfx(a0)
0000f85a 117c00040001	move.b	#4,obRender(a0)
0000f860 117c00040018	move.b	#4,obPriority(a0)
0000f866 117c00140019	move.b	#$14,obActWid(a0)
0000f86c 117c00110016	move.b	#$11,obHeight(a0)
0000f872 117c00080017	move.b	#8,obWidth(a0)
0000f878 117c00cc0020	move.b	#$CC,obColType(a0)
0000f87e 6100dd32	bsr.w	ObjectFall
0000f882 61005594	bsr.w	ObjFloorDist
0000f886 4a41	tst.w	d1
0000f888 6a14	bpl.s	locret_F89E
0000f88a d368000c	add.w	d1,obY(a0)
0000f88e 317c00000012	move.w	#0,obVelY(a0)
0000f894 54280024	addq.b	#2,obRoutine(a0)
0000f898 086800000022	bchg	#0,obStatus(a0)
0000f89e 4e75	rts	
0000f8a0 7000	moveq	#0,d0
0000f8a2 10280025	move.b	ob2ndRout(a0),d0
0000f8a6 323b0014	move.w	Yad_Index2(pc,d0.w),d1
0000f8aa 4ebb1010	jsr	Yad_Index2(pc,d1.w)
0000f8ae 43f90000f91c	lea	(Ani_Yad).l,a1
0000f8b4 6100ae62	bsr.w	AnimateSprite
0000f8b8 6000fdf2	bra.w	RememberState
0000f8c0 53680030	subq.w	#1,yad_timedelay(a0)
0000f8c4 6a1c	bpl.s	locret_F8E2
0000f8c6 54280025	addq.b	#2,ob2ndRout(a0)
0000f8ca 317cff000010	move.w	#-$100,obVelX(a0)
0000f8d0 117c0001001c	move.b	#1,obAnim(a0)
0000f8d6 086800000022	bchg	#0,obStatus(a0)
0000f8dc 6604	bne.s	locret_F8E2
0000f8de 44680010	neg.w	obVelX(a0)
0000f8e2 4e75	rts	
0000f8e4 6100dcf8	bsr.w	SpeedToPos
0000f8e8 6100552e	bsr.w	ObjFloorDist
0000f8ec 0c41fff8	cmpi.w	#-8,d1
0000f8f0 6d12	blt.s	Yad_Pause
0000f8f2 0c41000c	cmpi.w	#$C,d1
0000f8f6 6c0c	bge.s	Yad_Pause
0000f8f8 d368000c	add.w	d1,obY(a0)
0000f8fc 6100ff0a	bsr.w	ChkHitLeftRightWall
0000f900 6602	bne.s	Yad_Pause
0000f902 4e75	rts	
0000f904 55280025	subq.b	#2,ob2ndRout(a0)
0000f908 317c003b0030	move.w	#59,yad_timedelay(a0)
0000f90e 317c00000010	move.w	#0,obVelX(a0)
0000f914 117c0000001c	move.b	#0,obAnim(a0)
0000f91a 4e75	rts	
0000f9d6 4a280025	tst.b	obSolid(a0)
0000f9da 670000ec	beq.w	Solid_ChkEnter
0000f9de 3401	move.w	d1,d2
0000f9e0 d442	add.w	d2,d2
0000f9e2 43f8d000	lea	(v_player).w,a1
0000f9e6 082900010022	btst	#1,obStatus(a1)
0000f9ec 6610	bne.s	.leave
0000f9ee 30290008	move.w	obX(a1),d0
0000f9f2 90680008	sub.w	obX(a0),d0
0000f9f6 d041	add.w	d1,d0
0000f9f8 6b04	bmi.s	.leave
0000f9fa b042	cmp.w	d2,d0
0000f9fc 6514	blo.s	.stand
0000f9fe 08a900030022	bclr	#3,obStatus(a1)
0000fa04 08a800030022	bclr	#3,obStatus(a0)
0000fa0a 42280025	clr.b	obSolid(a0)
0000fa0e 7800	moveq	#0,d4
0000fa10 4e75	rts	
0000fa12 3404	move.w	d4,d2
0000fa14 6100810c	bsr.w	MvSonicOnPtfm
0000fa18 7800	moveq	#0,d4
0000fa1a 4e75	rts	
0000fa1c 4a280025	tst.b	obSolid(a0)
0000fa20 670000ae	beq.w	loc_FAD0
0000fa24 3401	move.w	d1,d2
0000fa26 d442	add.w	d2,d2
0000fa28 43f8d000	lea	(v_player).w,a1
0000fa2c 082900010022	btst	#1,obStatus(a1)
0000fa32 6610	bne.s	.leave
0000fa34 30290008	move.w	obX(a1),d0
0000fa38 90680008	sub.w	obX(a0),d0
0000fa3c d041	add.w	d1,d0
0000fa3e 6b04	bmi.s	.leave
0000fa40 b042	cmp.w	d2,d0
0000fa42 6514	blo.s	.stand
0000fa44 08a900030022	bclr	#3,obStatus(a1)
0000fa4a 08a800030022	bclr	#3,obStatus(a0)
0000fa50 42280025	clr.b	obSolid(a0)
0000fa54 7800	moveq	#0,d4
0000fa56 4e75	rts	
0000fa58 3404	move.w	d4,d2
0000fa5a 610080c6	bsr.w	MvSonicOnPtfm
0000fa5e 7800	moveq	#0,d4
0000fa60 4e75	rts	
0000fa62 43f8d000	lea	(v_player).w,a1
0000fa66 4a280001	tst.b	obRender(a0)
0000fa6a 6a000126	bpl.w	Solid_Ignore
0000fa6e 30290008	move.w	obX(a1),d0
0000fa72 90680008	sub.w	obX(a0),d0
0000fa76 d041	add.w	d1,d0
0000fa78 6b000118	bmi.w	Solid_Ignore
0000fa7c 3601	move.w	d1,d3
0000fa7e d643	add.w	d3,d3
0000fa80 b043	cmp.w	d3,d0
0000fa82 6200010e	bhi.w	Solid_Ignore
0000fa86 3a00	move.w	d0,d5
0000fa88 082800000001	btst	#0,obRender(a0)
0000fa8e 6704	beq.s	.notflipped
0000fa90 4645	not.w	d5
0000fa92 da43	add.w	d3,d5
0000fa94 e24d	lsr.w	#1,d5
0000fa96 7600	moveq	#0,d3
0000fa98 16325000	move.b	(a2,d5.w),d3
0000fa9c 9612	sub.b	(a2),d3
0000fa9e 3a28000c	move.w	obY(a0),d5
0000faa2 9a43	sub.w	d3,d5
0000faa4 16290016	move.b	obHeight(a1),d3
0000faa8 4883	ext.w	d3
0000faaa d443	add.w	d3,d2
0000faac 3629000c	move.w	obY(a1),d3
0000fab0 9645	sub.w	d5,d3
0000fab2 5843	addq.w	#4,d3
0000fab4 d642	add.w	d2,d3
0000fab6 6b0000da	bmi.w	Solid_Ignore
0000faba 3802	move.w	d2,d4
0000fabc d844	add.w	d4,d4
0000fabe b644	cmp.w	d4,d3
0000fac0 640000d0	bhs.w	Solid_Ignore
0000fac4 60000048	bra.w	loc_FB0E
0000fac8 4a280001	tst.b	obRender(a0)
0000facc 6a0000c4	bpl.w	Solid_Ignore
0000fad0 43f8d000	lea	(v_player).w,a1
0000fad4 30290008	move.w	obX(a1),d0
0000fad8 90680008	sub.w	obX(a0),d0
0000fadc d041	add.w	d1,d0
0000fade 6b0000b2	bmi.w	Solid_Ignore
0000fae2 3601	move.w	d1,d3
0000fae4 d643	add.w	d3,d3
0000fae6 b043	cmp.w	d3,d0
0000fae8 620000a8	bhi.w	Solid_Ignore
0000faec 16290016	move.b	obHeight(a1),d3
0000faf0 4883	ext.w	d3
0000faf2 d443	add.w	d3,d2
0000faf4 3629000c	move.w	obY(a1),d3
0000faf8 9668000c	sub.w	obY(a0),d3
0000fafc 5843	addq.w	#4,d3
0000fafe d642	add.w	d2,d3
0000fb00 6b000090	bmi.w	Solid_Ignore
0000fb04 3802	move.w	d2,d4
0000fb06 d844	add.w	d4,d4
0000fb08 b644	cmp.w	d4,d3
0000fb0a 64000086	bhs.w	Solid_Ignore
0000fb0e 4a38f7c8	tst.b	(f_playerctrl).w
0000fb12 6b00007e	bmi.w	Solid_Ignore
0000fb16 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
0000fb1c 64000074	bcc.w	Solid_Ignore
0000fb20 4a78fe08	tst.w	(v_debuguse).w
0000fb24 66000086	bne.w	Solid_Debug
0000fb28 3a00	move.w	d0,d5
0000fb2a b240	cmp.w	d0,d1
0000fb2c 6408	bhs.s	.isright
0000fb2e d241	add.w	d1,d1
0000fb30 9041	sub.w	d1,d0
0000fb32 3a00	move.w	d0,d5
0000fb34 4445	neg.w	d5
0000fb36 3203	move.w	d3,d1
0000fb38 b443	cmp.w	d3,d2
0000fb3a 6408	bhs.s	.isbelow
0000fb3c 5943	subq.w	#4,d3
0000fb3e 9644	sub.w	d4,d3
0000fb40 3203	move.w	d3,d1
0000fb42 4441	neg.w	d1
0000fb44 ba41	cmp.w	d1,d5
0000fb46 62000068	bhi.w	Solid_TopBottom
0000fb4a 0c410004	cmpi.w	#4,d1
0000fb4e 633c	bls.s	Solid_SideAir
0000fb50 4a40	tst.w	d0
0000fb52 671c	beq.s	Solid_Centre
0000fb54 6b08	bmi.s	Solid_Right
0000fb56 4a690010	tst.w	obVelX(a1)
0000fb5a 6b14	bmi.s	Solid_Centre
0000fb5c 6006	bra.s	Solid_Left
0000fb5e 4a690010	tst.w	obVelX(a1)
0000fb62 6a0c	bpl.s	Solid_Centre
0000fb64 337c00000014	move.w	#0,obInertia(a1)
0000fb6a 337c00000010	move.w	#0,obVelX(a1)
0000fb70 91690008	sub.w	d0,obX(a1)
0000fb74 082900010022	btst	#1,obStatus(a1)
0000fb7a 6610	bne.s	Solid_SideAir
0000fb7c 08e900050022	bset	#5,obStatus(a1)
0000fb82 08e800050022	bset	#5,obStatus(a0)
0000fb88 7801	moveq	#1,d4
0000fb8a 4e75	rts	
0000fb8c 6112	bsr.s	Solid_NotPushing
0000fb8e 7801	moveq	#1,d4
0000fb90 4e75	rts	
0000fb92 082800050022	btst	#5,obStatus(a0)
0000fb98 6712	beq.s	Solid_Debug
0000fb9a 337c0001001c	move.w	#id_Run,obAnim(a1)
0000fba0 08a800050022	bclr	#5,obStatus(a0)
0000fba6 08a900050022	bclr	#5,obStatus(a1)
0000fbac 7800	moveq	#0,d4
0000fbae 4e75	rts	
0000fbb0 4a43	tst.w	d3
0000fbb2 6b08	bmi.s	Solid_Below
0000fbb4 0c430010	cmpi.w	#$10,d3
0000fbb8 6534	blo.s	Solid_Landed
0000fbba 60d6	bra.s	Solid_Ignore
0000fbbc 4a690012	tst.w	obVelY(a1)
0000fbc0 6714	beq.s	Solid_Squash
0000fbc2 6a0e	bpl.s	Solid_TopBtmAir
0000fbc4 4a43	tst.w	d3
0000fbc6 6a0a	bpl.s	Solid_TopBtmAir
0000fbc8 9769000c	sub.w	d3,obY(a1)
0000fbcc 337c00000012	move.w	#0,obVelY(a1)
0000fbd2 78ff	moveq	#-1,d4
0000fbd4 4e75	rts	
0000fbd6 082900010022	btst	#1,obStatus(a1)
0000fbdc 66f4	bne.s	Solid_TopBtmAir
0000fbde 2f08	move.l	a0,-(sp)
0000fbe0 2049	movea.l	a1,a0
0000fbe2 4eb90001b098	jsr	(KillSonic).l
0000fbe8 205f	movea.l	(sp)+,a0
0000fbea 78ff	moveq	#-1,d4
0000fbec 4e75	rts	
0000fbee 5943	subq.w	#4,d3
0000fbf0 7200	moveq	#0,d1
0000fbf2 12280019	move.b	obActWid(a0),d1
0000fbf6 3401	move.w	d1,d2
0000fbf8 d442	add.w	d2,d2
0000fbfa d2690008	add.w	obX(a1),d1
0000fbfe 92680008	sub.w	obX(a0),d1
0000fc02 6b24	bmi.s	Solid_Miss
0000fc04 b242	cmp.w	d2,d1
0000fc06 6420	bhs.s	Solid_Miss
0000fc08 4a690012	tst.w	obVelY(a1)
0000fc0c 6b1a	bmi.s	Solid_Miss
0000fc0e 9769000c	sub.w	d3,obY(a1)
0000fc12 5369000c	subq.w	#1,obY(a1)
0000fc16 6114	bsr.s	Solid_ResetFloor
0000fc18 117c00020025	move.b	#2,obSolid(a0)
0000fc1e 08e800030022	bset	#3,obStatus(a0)
0000fc24 78ff	moveq	#-1,d4
0000fc26 4e75	rts	
0000fc28 7800	moveq	#0,d4
0000fc2a 4e75	rts	
0000fc2c 082900030022	btst	#3,obStatus(a1)
0000fc32 671a	beq.s	.notonobj
0000fc34 7000	moveq	#0,d0
0000fc36 1029003d	move.b	standonobject(a1),d0
0000fc3a ed48	lsl.w	#object_size_bits,d0
0000fc3c 068000ffd000	addi.l	#(v_objspace&$FFFFFF),d0
0000fc42 2440	movea.l	d0,a2
0000fc44 08aa00030022	bclr	#3,obStatus(a2)
0000fc4a 422a0025	clr.b	obSolid(a2)
0000fc4e 3008	move.w	a0,d0
0000fc50 0440d000	subi.w	#v_objspace&$FFFF,d0
0000fc54 ec48	lsr.w	#object_size_bits,d0
0000fc56 0240007f	andi.w	#$7F,d0
0000fc5a 1340003d	move.b	d0,standonobject(a1)
0000fc5e 137c00000026	move.b	#0,obAngle(a1)
0000fc64 337c00000012	move.w	#0,obVelY(a1)
0000fc6a 336900100014	move.w	obVelX(a1),obInertia(a1)
0000fc70 082900010022	btst	#1,obStatus(a1)
0000fc76 670c	beq.s	.notinair
0000fc78 2f08	move.l	a0,-(sp)
0000fc7a 2049	movea.l	a1,a0
0000fc7c 4eb9000137a0	jsr	(Sonic_ResetOnFloor).l
0000fc82 205f	movea.l	(sp)+,a0
0000fc84 08e900030022	bset	#3,obStatus(a1)
0000fc8a 08e800030022	bset	#3,obStatus(a0)
0000fc90 4e75	rts	
0000fc92 7000	moveq	#0,d0
0000fc94 10280024	move.b	obRoutine(a0),d0
0000fc98 323b000a	move.w	Smab_Index(pc,d0.w),d1
0000fc9c 4ebb1006	jsr	Smab_Index(pc,d1.w)
0000fca0 6000fa0a	bra.w	RememberState
0000fcaa 54280024	addq.b	#2,obRoutine(a0)
0000fcae 217c0000fdd40004	move.l	#Map_Smab,obMap(a0)
0000fcb6 317c42b80002	move.w	#ArtTile_MZ_Block|Tile_Pal3,obGfx(a0)
0000fcbc 117c00040001	move.b	#4,obRender(a0)
0000fcc2 117c00100019	move.b	#$10,obActWid(a0)
0000fcc8 117c00040018	move.b	#4,obPriority(a0)
0000fcce 11680028001a	move.b	obSubtype(a0),obFrame(a0)
0000fcd4 3178f7d00034	move.w	(v_itembonus).w,objoff_34(a0)
0000fcda 1178d01c0032	move.b	(v_player+obAnim).w,sonicAniFrame(a0)
0000fce0 323c001b	move.w	#$1B,d1
0000fce4 343c0010	move.w	#$10,d2
0000fce8 363c0011	move.w	#$11,d3
0000fcec 38280008	move.w	obX(a0),d4
0000fcf0 6100fce4	bsr.w	SolidObject
0000fcf4 082800030022	btst	#3,obStatus(a0)
0000fcfa 6602	bne.s	.smash
0000fcfc 4e75	rts	
0000fcfe 0c2800020032	cmpi.b	#id_Roll,sonicAniFrame(a0)
0000fd04 66f6	bne.s	.notspinning
0000fd06 31e80034f7d0	move.w	.count(a0),(v_itembonus).w
0000fd0c 08e900020022	bset	#2,obStatus(a1)
0000fd12 137c000e0016	move.b	#$E,obHeight(a1)
0000fd18 137c00070017	move.b	#7,obWidth(a1)
0000fd1e 137c0002001c	move.b	#id_Roll,obAnim(a1)
0000fd24 337cfd000012	move.w	#-$300,obVelY(a1)
0000fd2a 08e900010022	bset	#1,obStatus(a1)
0000fd30 08a900030022	bclr	#3,obStatus(a1)
0000fd36 137c00020024	move.b	#2,obRoutine(a1)
0000fd3c 08a800030022	bclr	#3,obStatus(a0)
0000fd42 42280025	clr.b	obSolid(a0)
0000fd46 117c0001001a	move.b	#1,obFrame(a0)
0000fd4c 49f90000fdbc	lea	(Smab_Speeds).l,a4
0000fd52 7203	moveq	#3,d1
0000fd54 343c0038	move.w	#$38,d2
0000fd58 6100d494	bsr.w	SmashObject
0000fd5c 6100dd2e	bsr.w	FindFreeObj
0000fd60 6642	bne.s	Smab_Points
0000fd68 336800080008	move.w	obX(a0),obX(a1)
0000fd6e 3368000c000c	move.w	obY(a0),obY(a1)
0000fd74 3438f7d0	move.w	(v_itembonus).w,d2
0000fd78 5478f7d0	addq.w	#2,(v_itembonus).w
0000fd7c 0c420006	cmpi.w	#6,d2
0000fd80 6502	blo.s	.bonus
0000fd82 7406	moveq	#6,d2
0000fd84 7000	moveq	#0,d0
0000fd86 303b2044	move.w	Smab_Scores(pc,d2.w),d0
0000fd8a 0c780020f7d0	cmpi.w	#$20,(v_itembonus).w
0000fd90 6506	blo.s	.givepoints
0000fd92 303c03e8	move.w	#1000,d0
0000fd96 740a	moveq	#10,d2
0000fd98 4eb90001c68c	jsr	(AddPoints).l
0000fd9e e24a	lsr.w	#1,d2
0000fda0 1342001a	move.b	d2,obFrame(a1)
0000fda4 6100d838	bsr.w	SpeedToPos
0000fda8 066800380012	addi.w	#$38,obVelY(a0)
0000fdae 6100d854	bsr.w	DisplaySprite
0000fdb2 4a280001	tst.b	obRender(a0)
0000fdb6 6a00d888	bpl.w	DeleteObject
0000fdba 4e75	rts	
0000fdf8 7000	moveq	#0,d0
0000fdfa 10280024	move.b	obRoutine(a0),d0
0000fdfe 323b0006	move.w	MBlock_Index(pc,d0.w),d1
0000fe02 4efb1002	jmp	MBlock_Index(pc,d1.w)
0000fe16 54280024	addq.b	#2,obRoutine(a0)
0000fe1a 217c0001004a0004	move.l	#Map_MBlock,obMap(a0)
0000fe22 317c42b80002	move.w	#ArtTile_MZ_Block|Tile_Pal3,obGfx(a0)
0000fe28 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
0000fe2e 6614	bne.s	loc_FE44
0000fe30 217c000100a00004	move.l	#Map_MBlockLZ,obMap(a0)
0000fe38 317c43bc0002	move.w	#ArtTile_LZ_Moving_Block|Tile_Pal3,obGfx(a0)
0000fe3e 117c00070016	move.b	#7,obHeight(a0)
0000fe44 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
0000fe4a 6614	bne.s	loc_FE60
0000fe4c 317c22c00002	move.w	#ArtTile_SBZ_Moving_Block_Short|Tile_Pal2,obGfx(a0)
0000fe52 0c2800280028	cmpi.b	#$28,obSubtype(a0)
0000fe58 6706	beq.s	loc_FE60
0000fe5a 317c44600002	move.w	#ArtTile_SBZ_Moving_Block_Long|Tile_Pal3,obGfx(a0)
0000fe60 117c00040001	move.b	#4,obRender(a0)
0000fe66 7000	moveq	#0,d0
0000fe68 10280028	move.b	obSubtype(a0),d0
0000fe6c e648	lsr.w	#3,d0
0000fe6e 0240001e	andi.w	#$1E,d0
0000fe72 45fb0098	lea	MBlock_Var(pc,d0.w),a2
0000fe76 115a0019	move.b	(a2)+,obActWid(a0)
0000fe7a 115a001a	move.b	(a2)+,obFrame(a0)
0000fe7e 117c00040018	move.b	#4,obPriority(a0)
0000fe84 316800080030	move.w	obX(a0),mblock_origX(a0)
0000fe8a 3168000c0032	move.w	obY(a0),mblock_origY(a0)
0000fe90 0228000f0028	andi.b	#$F,obSubtype(a0)
0000fe96 6100004e	bsr.w	MBlock_Move
0000fe9a 7200	moveq	#0,d1
0000fe9c 12280019	move.b	obActWid(a0),d1
0000fea0 4eb90000744c	jsr	(PlatformObject).l
0000fea6 601c	bra.s	MBlock_ChkDel
0000fea8 7200	moveq	#0,d1
0000feaa 12280019	move.b	obActWid(a0),d1
0000feae 4eb9000075c0	jsr	(ExitPlatform).l
0000feb4 3f280008	move.w	obX(a0),-(sp)
0000feb8 6100002c	bsr.w	MBlock_Move
0000febc 341f	move.w	(sp)+,d2
0000febe 4eb900007b2e	jsr	(MvSonicOnPtfm2).l
0000fec4 30280030	move.w	mblock_origX(a0),d0
0000fec8 0240ff80	andi.w	#$FF80,d0
0000fecc 3238f700	move.w	(v_screenposx).w,d1
0000fed0 04410080	subi.w	#128,d1
0000fed4 0241ff80	andi.w	#$FF80,d1
0000fed8 9041	sub.w	d1,d0
0000feda 0c400280	cmpi.w	#128+320+192,d0
0000fede 6200d760	bhi.w	DeleteObject
0000fee2 6000d720	bra.w	DisplaySprite
0000fee6 7000	moveq	#0,d0
0000fee8 10280028	move.b	obSubtype(a0),d0
0000feec 0240000f	andi.w	#$F,d0
0000fef0 d040	add.w	d0,d0
0000fef2 323b0006	move.w	MBlock_TypeIndex(pc,d0.w),d1
0000fef6 4efb1002	jmp	MBlock_TypeIndex(pc,d1.w)
0000ff10 4e75	rts	
0000ff12 1038fe6c	move.b	(v_oscillate+$E).w,d0
0000ff16 323c0060	move.w	#$60,d1
0000ff1a 082800000022	btst	#0,obStatus(a0)
0000ff20 6704	beq.s	loc_FF26
0000ff22 4440	neg.w	d0
0000ff24 d041	add.w	d1,d0
0000ff26 32280030	move.w	mblock_origX(a0),d1
0000ff2a 9240	sub.w	d0,d1
0000ff2c 31410008	move.w	d1,obX(a0)
0000ff30 4e75	rts	
0000ff32 0c2800040024	cmpi.b	#4,obRoutine(a0)
0000ff38 6604	bne.s	MBlock_02_Wait
0000ff3a 52280028	addq.b	#1,obSubtype(a0)
0000ff3e 4e75	rts	
0000ff40 7600	moveq	#0,d3
0000ff42 16280019	move.b	obActWid(a0),d3
0000ff46 61004f92	bsr.w	ObjHitWallRight
0000ff4a 4a41	tst.w	d1
0000ff4c 6b0c	bmi.s	MBlock_03_End
0000ff4e 52680008	addq.w	#1,obX(a0)
0000ff52 316800080030	move.w	obX(a0),mblock_origX(a0)
0000ff58 4e75	rts	
0000ff5a 42280028	clr.b	obSubtype(a0)
0000ff5e 4e75	rts	
0000ff60 7600	moveq	#0,d3
0000ff62 16280019	move.b	obActWid(a0),d3
0000ff66 61004f72	bsr.w	ObjHitWallRight
0000ff6a 4a41	tst.w	d1
0000ff6c 6b0c	bmi.s	MBlock_05_End
0000ff6e 52680008	addq.w	#1,obX(a0)
0000ff72 316800080030	move.w	obX(a0),mblock_origX(a0)
0000ff78 4e75	rts	
0000ff7a 52280028	addq.b	#1,obSubtype(a0)
0000ff7e 4e75	rts	
0000ff80 6100d65c	bsr.w	SpeedToPos
0000ff84 066800180012	addi.w	#$18,obVelY(a0)
0000ff8a 61004e8c	bsr.w	ObjFloorDist
0000ff8e 4a41	tst.w	d1
0000ff90 6a00000e	bpl.w	locret_FFA0
0000ff94 d368000c	add.w	d1,obY(a0)
0000ff98 42680012	clr.w	obVelY(a0)
0000ff9c 42280028	clr.b	obSubtype(a0)
0000ffa0 4e75	rts	
0000ffa2 4a38f7e2	tst.b	(f_switch+2).w
0000ffa6 6704	beq.s	MBlock_07_ChkDel
0000ffa8 57280028	subq.b	#3,obSubtype(a0)
0000ffac 588f	addq.l	#4,sp
0000ffae 30280030	move.w	mblock_origX(a0),d0
0000ffb2 0240ff80	andi.w	#$FF80,d0
0000ffb6 3238f700	move.w	(v_screenposx).w,d1
0000ffba 04410080	subi.w	#128,d1
0000ffbe 0241ff80	andi.w	#$FF80,d1
0000ffc2 9041	sub.w	d1,d0
0000ffc4 0c400280	cmpi.w	#128+320+192,d0
0000ffc8 6200d676	bhi.w	DeleteObject
0000ffcc 4e75	rts	
0000ffce 1038fe7c	move.b	(v_oscillate+$1E).w,d0
0000ffd2 323c0080	move.w	#$80,d1
0000ffd6 082800000022	btst	#0,obStatus(a0)
0000ffdc 6704	beq.s	loc_FFE2
0000ffde 4440	neg.w	d0
0000ffe0 d041	add.w	d1,d0
0000ffe2 32280032	move.w	mblock_origY(a0),d1
0000ffe6 9240	sub.w	d0,d1
0000ffe8 3141000c	move.w	d1,obY(a0)
0000ffec 4e75	rts	
0000ffee 7600	moveq	#0,d3
0000fff0 16280019	move.b	obActWid(a0),d3
0000fff4 d643	add.w	d3,d3
0000fff6 7208	moveq	#8,d1
0000fff8 082800000022	btst	#0,obStatus(a0)
0000fffe 6704	beq.s	loc_10004
00010000 4441	neg.w	d1
00010002 4443	neg.w	d3
00010004 4a680036	tst.w	objoff_36(a0)
00010008 6626	bne.s	MBlock_0A_Back
0001000a 30280008	move.w	obX(a0),d0
0001000e 90680030	sub.w	mblock_origX(a0),d0
00010012 b043	cmp.w	d3,d0
00010014 670c	beq.s	MBlock_0A_Wait
00010016 d3680008	add.w	d1,obX(a0)
0001001a 317c012c0034	move.w	#300,objoff_34(a0)
00010020 4e75	rts	
00010022 53680034	subq.w	#1,objoff_34(a0)
00010026 6606	bne.s	locret_1002E
00010028 317c00010036	move.w	#1,objoff_36(a0)
0001002e 4e75	rts	
00010030 30280008	move.w	obX(a0),d0
00010034 90680030	sub.w	mblock_origX(a0),d0
00010038 6706	beq.s	MBlock_0A_Reset
0001003a 93680008	sub.w	d1,obX(a0)
0001003e 4e75	rts	
00010040 42680036	clr.w	objoff_36(a0)
00010044 53280028	subq.b	#1,obSubtype(a0)
00010048 4e75	rts	
000100a8 7000	moveq	#0,d0
000100aa 10280024	move.b	obRoutine(a0),d0
000100ae 323b0006	move.w	Bas_Index(pc,d0.w),d1
000100b2 4efb1002	jmp	Bas_Index(pc,d1.w)
000100ba 54280024	addq.b	#2,obRoutine(a0)
000100be 217c0001023e0004	move.l	#Map_Bas,obMap(a0)
000100c6 317c84b80002	move.w	#ArtTile_Basaran|Tile_Prio,obGfx(a0)
000100cc 117c00040001	move.b	#4,obRender(a0)
000100d2 117c000c0016	move.b	#$C,obHeight(a0)
000100d8 117c00020018	move.b	#2,obPriority(a0)
000100de 117c000b0020	move.b	#$B,obColType(a0)
000100e4 117c00100019	move.b	#$10,obActWid(a0)
000100ea 7000	moveq	#0,d0
000100ec 10280025	move.b	ob2ndRout(a0),d0
000100f0 323b0014	move.w	.index(pc,d0.w),d1
000100f4 4ebb1010	jsr	.index(pc,d1.w)
000100f8 43f90001022a	lea	(Ani_Bas).l,a1
000100fe 6100a618	bsr.w	AnimateSprite
00010102 6000f5a8	bra.w	RememberState
0001010e 343c0080	move.w	#$80,d2
00010112 610000e2	bsr.w	.chkdistance
00010116 6430	bcc.s	.nodrop
00010118 3038d00c	move.w	(v_player+obY).w,d0
0001011c 31400036	move.w	d0,objoff_36(a0)
00010120 9068000c	sub.w	obY(a0),d0
00010124 6522	bcs.s	.nodrop
00010126 0c400080	cmpi.w	#$80,d0
0001012a 641c	bhs.s	.nodrop
0001012c 4a78fe08	tst.w	(v_debuguse).w
00010130 6616	bne.s	.nodrop
00010132 1038fe0f	move.b	(v_vblank_byte).w,d0
00010136 d007	add.b	d7,d0
00010138 02000007	andi.b	#7,d0
0001013c 660a	bne.s	.nodrop
0001013e 117c0001001c	move.b	#1,obAnim(a0)
00010144 54280025	addq.b	#2,ob2ndRout(a0)
00010148 4e75	rts	
0001014a 6100d492	bsr.w	SpeedToPos
0001014e 066800180012	addi.w	#$18,obVelY(a0)
00010154 343c0080	move.w	#$80,d2
00010158 6100009c	bsr.w	.chkdistance
0001015c 30280036	move.w	objoff_36(a0),d0
00010160 9068000c	sub.w	obY(a0),d0
00010164 651c	bcs.s	.chkdel
00010166 0c400010	cmpi.w	#$10,d0
0001016a 6414	bhs.s	.dropmore
0001016c 31410010	move.w	d1,obVelX(a0)
00010170 317c00000012	move.w	#0,obVelY(a0)
00010176 117c0002001c	move.b	#2,obAnim(a0)
0001017c 54280025	addq.b	#2,ob2ndRout(a0)
00010180 4e75	rts	
00010182 4a280001	tst.b	obRender(a0)
00010186 6a00d4b8	bpl.w	DeleteObject
0001018a 4e75	rts	
0001018c 1038fe0f	move.b	(v_vblank_byte).w,d0
00010190 0200000f	andi.b	#$F,d0
00010194 660a	bne.s	.nosound
00010196 303c00c0	move.w	#sfx_Basaran,d0
0001019a 4eb90000139c	jsr	(QueueSound2).l
000101a0 6100d43c	bsr.w	SpeedToPos
000101a4 3038d008	move.w	(v_player+obX).w,d0
000101a8 90680008	sub.w	obX(a0),d0
000101ac 6402	bcc.s	.isright
000101ae 4440	neg.w	d0
000101b0 0c400080	cmpi.w	#$80,d0
000101b4 6510	blo.s	.dontflyup
000101b6 1038fe0f	move.b	(v_vblank_byte).w,d0
000101ba d007	add.b	d7,d0
000101bc 02000007	andi.b	#7,d0
000101c0 6604	bne.s	.dontflyup
000101c2 54280025	addq.b	#2,ob2ndRout(a0)
000101c6 4e75	rts	
000101c8 6100d414	bsr.w	SpeedToPos
000101cc 046800180012	subi.w	#$18,obVelY(a0)
000101d2 61004dca	bsr.w	ObjHitCeiling
000101d6 4a41	tst.w	d1
000101d8 6a1a	bpl.s	.noceiling
000101da 9368000c	sub.w	d1,obY(a0)
000101de 0268fff80008	andi.w	#$FFF8,obX(a0)
000101e4 42680010	clr.w	obVelX(a0)
000101e8 42680012	clr.w	obVelY(a0)
000101ec 4228001c	clr.b	obAnim(a0)
000101f0 42280025	clr.b	ob2ndRout(a0)
000101f4 4e75	rts	
000101f6 323c0100	move.w	#$100,d1
000101fa 08e800000022	bset	#0,obStatus(a0)
00010200 3038d008	move.w	(v_player+obX).w,d0
00010204 90680008	sub.w	obX(a0),d0
00010208 640a	bcc.s	.right
0001020a 4440	neg.w	d0
0001020c 4441	neg.w	d1
0001020e 08a800000022	bclr	#0,obStatus(a0)
00010214 b042	cmp.w	d2,d0
00010216 4e75	rts	
00010218 6100d3c4	bsr.w	SpeedToPos
0001021c 6100d3e6	bsr.w	DisplaySprite
00010220 4a280001	tst.b	obRender(a0)
00010224 6a00d41a	bpl.w	DeleteObject
00010228 4e75	rts	
00010286 7000	moveq	#0,d0
00010288 10280024	move.b	obRoutine(a0),d0
0001028c 323b0006	move.w	FBlock_Index(pc,d0.w),d1
00010290 4efb1002	jmp	FBlock_Index(pc,d1.w)
000102a8 54280024	addq.b	#2,obRoutine(a0)
000102ac 217c000107000004	move.l	#Map_FBlock,obMap(a0)
000102b4 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
000102ba 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000102c0 6606	bne.s	.notLZ
000102c2 317c43c40002	move.w	#ArtTile_LZ_Door|Tile_Pal3,obGfx(a0)
000102c8 117c00040001	move.b	#4,obRender(a0)
000102ce 117c00030018	move.b	#3,obPriority(a0)
000102d4 7000	moveq	#0,d0
000102d6 10280028	move.b	obSubtype(a0),d0
000102da e648	lsr.w	#3,d0
000102dc 0240000e	andi.w	#$E,d0
000102e0 45fb00b6	lea	FBlock_Var(pc,d0.w),a2
000102e4 115a0019	move.b	(a2)+,obActWid(a0)
000102e8 11520016	move.b	(a2),obHeight(a0)
000102ec e248	lsr.w	#1,d0
000102ee 1140001a	move.b	d0,obFrame(a0)
000102f2 316800080034	move.w	obX(a0),fb_origX(a0)
000102f8 3168000c0030	move.w	obY(a0),fb_origY(a0)
000102fe 7000	moveq	#0,d0
00010300 1012	move.b	(a2),d0
00010302 d040	add.w	d0,d0
00010304 3140003a	move.w	d0,fb_height(a0)
00010308 7000	moveq	#0,d0
0001030a 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00010310 6720	beq.s	.stillnotLZ
00010312 10280028	move.b	obSubtype(a0),d0
00010316 0240000f	andi.w	#$F,d0
0001031a 5140	subq.w	#8,d0
0001031c 6514	bcs.s	.stillnotLZ
0001031e e548	lsl.w	#2,d0
00010320 45f8fe8a	lea	(v_oscillate+$2C).w,a2
00010324 45f20000	lea	(a2,d0.w),a2
00010328 4a52	tst.w	(a2)
0001032a 6a06	bpl.s	.stillnotLZ
0001032c 086800000022	bchg	#0,obStatus(a0)
00010332 10280028	move.b	obSubtype(a0),d0
00010336 6a44	bpl.s	FBlock_Action
00010338 0200000f	andi.b	#$F,d0
0001033c 1140003c	move.b	d0,fb_type(a0)
00010340 117c00050028	move.b	#5,obSubtype(a0)
00010346 0c280007001a	cmpi.b	#7,obFrame(a0)
0001034c 660c	bne.s	.chkstate
0001034e 117c000c0028	move.b	#$C,obSubtype(a0)
00010354 317c0080003a	move.w	#$80,fb_height(a0)
0001035a 45f8fc00	lea	(v_objstate).w,a2
0001035e 7000	moveq	#0,d0
00010360 10280023	move.b	obRespawnNo(a0),d0
00010364 6716	beq.s	FBlock_Action
00010366 08b200070002	bclr	#7,2(a2,d0.w)
0001036c 083200000002	btst	#0,2(a2,d0.w)
00010372 6708	beq.s	FBlock_Action
00010374 52280028	addq.b	#1,obSubtype(a0)
00010378 4268003a	clr.w	fb_height(a0)
0001037c 3f280008	move.w	obX(a0),-(sp)
00010380 7000	moveq	#0,d0
00010382 10280028	move.b	obSubtype(a0),d0
00010386 0240000f	andi.w	#$F,d0
0001038a d040	add.w	d0,d0
0001038c 323b0048	move.w	.index(pc,d0.w),d1
00010390 4ebb1044	jsr	.index(pc,d1.w)
00010394 381f	move.w	(sp)+,d4
00010396 4a280001	tst.b	obRender(a0)
0001039a 6a18	bpl.s	.chkdel
0001039c 7200	moveq	#0,d1
0001039e 12280019	move.b	obActWid(a0),d1
000103a2 0641000b	addi.w	#$B,d1
000103a6 7400	moveq	#0,d2
000103a8 14280016	move.b	obHeight(a0),d2
000103ac 3602	move.w	d2,d3
000103ae 5243	addq.w	#1,d3
000103b0 6100f624	bsr.w	SolidObject
000103b4 30280034	move.w	fb_origX(a0),d0
000103b8 0240ff80	andi.w	#$FF80,d0
000103bc 3238f700	move.w	(v_screenposx).w,d1
000103c0 04410080	subi.w	#128,d1
000103c4 0241ff80	andi.w	#$FF80,d1
000103c8 9041	sub.w	d1,d0
000103ca 0c400280	cmpi.w	#128+320+192,d0
000103ce 6200d270	bhi.w	DeleteObject
000103d2 6000d230	bra.w	DisplaySprite
000103f2 4e75	rts	
000103f4 323c0040	move.w	#$40,d1
000103f8 7000	moveq	#0,d0
000103fa 1038fe68	move.b	(v_oscillate+$A).w,d0
000103fe 600a	bra.s	.moveLR
00010400 323c0080	move.w	#$80,d1
00010404 7000	moveq	#0,d0
00010406 1038fe7c	move.b	(v_oscillate+$1E).w,d0
0001040a 082800000022	btst	#0,obStatus(a0)
00010410 6704	beq.s	.noflip
00010412 4440	neg.w	d0
00010414 d041	add.w	d1,d0
00010416 32280034	move.w	fb_origX(a0),d1
0001041a 9240	sub.w	d0,d1
0001041c 31410008	move.w	d1,obX(a0)
00010420 4e75	rts	
00010422 323c0040	move.w	#$40,d1
00010426 7000	moveq	#0,d0
00010428 1038fe68	move.b	(v_oscillate+$A).w,d0
0001042c 600a	bra.s	.moveUD
0001042e 323c0080	move.w	#$80,d1
00010432 7000	moveq	#0,d0
00010434 1038fe7c	move.b	(v_oscillate+$1E).w,d0
00010438 082800000022	btst	#0,obStatus(a0)
0001043e 6704	beq.s	.noflip04
00010440 4440	neg.w	d0
00010442 d041	add.w	d1,d0
00010444 32280030	move.w	fb_origY(a0),d1
00010448 9240	sub.w	d0,d1
0001044a 3141000c	move.w	d1,obY(a0)
0001044e 4e75	rts	
00010450 4a280038	tst.b	objoff_38(a0)
00010454 664e	bne.s	.loc_104A4
00010456 0c780100fe10	cmpi.w	#id_LZ_act1,(v_zone).w
0001045c 661c	bne.s	.aaa
0001045e 0c280003003c	cmpi.b	#3,fb_type(a0)
00010464 6614	bne.s	.aaa
00010466 4238f7c9	clr.b	(f_wtunnelallow).w
0001046a 3038d008	move.w	(v_player+obX).w,d0
0001046e b0680008	cmp.w	obX(a0),d0
00010472 6406	bhs.s	.aaa
00010474 11fc0001f7c9	move.b	#1,(f_wtunnelallow).w
0001047a 45f8f7e0	lea	(f_switch).w,a2
0001047e 7000	moveq	#0,d0
00010480 1028003c	move.b	fb_type(a0),d0
00010484 083200000000	btst	#0,(a2,d0.w)
0001048a 6722	beq.s	.loc_104AE
0001048c 0c780100fe10	cmpi.w	#id_LZ_act1,(v_zone).w
00010492 660a	bne.s	.loc_1049E
00010494 0c000003	cmpi.b	#3,d0
00010498 6604	bne.s	.loc_1049E
0001049a 4238f7c9	clr.b	(f_wtunnelallow).w
0001049e 117c00010038	move.b	#1,objoff_38(a0)
000104a4 4a68003a	tst.w	fb_height(a0)
000104a8 671e	beq.s	.loc_104C8
000104aa 5568003a	subq.w	#2,fb_height(a0)
000104ae 3028003a	move.w	fb_height(a0),d0
000104b2 082800000022	btst	#0,obStatus(a0)
000104b8 6702	beq.s	.loc_104BC
000104ba 4440	neg.w	d0
000104bc 32280030	move.w	fb_origY(a0),d1
000104c0 d240	add.w	d0,d1
000104c2 3141000c	move.w	d1,obY(a0)
000104c6 4e75	rts	
000104c8 52280028	addq.b	#1,obSubtype(a0)
000104cc 42280038	clr.b	objoff_38(a0)
000104d0 45f8fc00	lea	(v_objstate).w,a2
000104d4 7000	moveq	#0,d0
000104d6 10280023	move.b	obRespawnNo(a0),d0
000104da 67d2	beq.s	.loc_104AE
000104dc 08f200000002	bset	#0,2(a2,d0.w)
000104e2 60ca	bra.s	.loc_104AE
000104e4 4a280038	tst.b	objoff_38(a0)
000104e8 6616	bne.s	.loc_10500
000104ea 45f8f7e0	lea	(f_switch).w,a2
000104ee 7000	moveq	#0,d0
000104f0 1028003c	move.b	fb_type(a0),d0
000104f4 4a320000	tst.b	(a2,d0.w)
000104f8 6a18	bpl.s	.loc_10512
000104fa 117c00010038	move.b	#1,objoff_38(a0)
00010500 7000	moveq	#0,d0
00010502 10280016	move.b	obHeight(a0),d0
00010506 d040	add.w	d0,d0
00010508 b068003a	cmp.w	fb_height(a0),d0
0001050c 671e	beq.s	.loc_1052C
0001050e 5468003a	addq.w	#2,fb_height(a0)
00010512 3028003a	move.w	fb_height(a0),d0
00010516 082800000022	btst	#0,obStatus(a0)
0001051c 6702	beq.s	.loc_10520
0001051e 4440	neg.w	d0
00010520 32280030	move.w	fb_origY(a0),d1
00010524 d240	add.w	d0,d1
00010526 3141000c	move.w	d1,obY(a0)
0001052a 4e75	rts	
0001052c 53280028	subq.b	#1,obSubtype(a0)
00010530 42280038	clr.b	objoff_38(a0)
00010534 45f8fc00	lea	(v_objstate).w,a2
00010538 7000	moveq	#0,d0
0001053a 10280023	move.b	obRespawnNo(a0),d0
0001053e 67d2	beq.s	.loc_10512
00010540 08b200000002	bclr	#0,2(a2,d0.w)
00010546 60ca	bra.s	.loc_10512
00010548 4a280038	tst.b	objoff_38(a0)
0001054c 6610	bne.s	.loc_1055E
0001054e 4a38f7ef	tst.b	(f_switch+$F).w
00010552 6724	beq.s	.locret_10578
00010554 117c00010038	move.b	#1,objoff_38(a0)
0001055a 4268003a	clr.w	fb_height(a0)
0001055e 52680008	addq.w	#1,obX(a0)
00010562 316800080034	move.w	obX(a0),fb_origX(a0)
00010568 5268003a	addq.w	#1,fb_height(a0)
0001056c 0c680380003a	cmpi.w	#$380,fb_height(a0)
00010572 6604	bne.s	.locret_10578
00010574 42280028	clr.b	obSubtype(a0)
00010578 4e75	rts	
0001057a 4a280038	tst.b	objoff_38(a0)
0001057e 6618	bne.s	.loc_10598
00010580 45f8f7e0	lea	(f_switch).w,a2
00010584 7000	moveq	#0,d0
00010586 1028003c	move.b	fb_type(a0),d0
0001058a 083200000000	btst	#0,(a2,d0.w)
00010590 6710	beq.s	.loc_105A2
00010592 117c00010038	move.b	#1,objoff_38(a0)
00010598 4a68003a	tst.w	fb_height(a0)
0001059c 6722	beq.s	.loc_105C0
0001059e 5568003a	subq.w	#2,fb_height(a0)
000105a2 3028003a	move.w	fb_height(a0),d0
000105a6 082800000022	btst	#0,obStatus(a0)
000105ac 6706	beq.s	.loc_105B4
000105ae 4440	neg.w	d0
000105b0 06400080	addi.w	#$80,d0
000105b4 32280034	move.w	fb_origX(a0),d1
000105b8 d240	add.w	d0,d1
000105ba 31410008	move.w	d1,obX(a0)
000105be 4e75	rts	
000105c0 52280028	addq.b	#1,obSubtype(a0)
000105c4 42280038	clr.b	objoff_38(a0)
000105c8 45f8fc00	lea	(v_objstate).w,a2
000105cc 7000	moveq	#0,d0
000105ce 10280023	move.b	obRespawnNo(a0),d0
000105d2 67ce	beq.s	.loc_105A2
000105d4 08f200000002	bset	#0,2(a2,d0.w)
000105da 60c6	bra.s	.loc_105A2
000105dc 4a280038	tst.b	objoff_38(a0)
000105e0 6616	bne.s	.loc_105F8
000105e2 45f8f7e0	lea	(f_switch).w,a2
000105e6 7000	moveq	#0,d0
000105e8 1028003c	move.b	fb_type(a0),d0
000105ec 4a320000	tst.b	(a2,d0.w)
000105f0 6a14	bpl.s	.wtf
000105f2 117c00010038	move.b	#1,objoff_38(a0)
000105f8 303c0080	move.w	#$80,d0
000105fc b068003a	cmp.w	fb_height(a0),d0
00010600 6722	beq.s	.loc_10624
00010602 5468003a	addq.w	#2,fb_height(a0)
00010606 3028003a	move.w	fb_height(a0),d0
0001060a 082800000022	btst	#0,obStatus(a0)
00010610 6706	beq.s	.loc_10618
00010612 4440	neg.w	d0
00010614 06400080	addi.w	#$80,d0
00010618 32280034	move.w	fb_origX(a0),d1
0001061c d240	add.w	d0,d1
0001061e 31410008	move.w	d1,obX(a0)
00010622 4e75	rts	
00010624 53280028	subq.b	#1,obSubtype(a0)
00010628 42280038	clr.b	objoff_38(a0)
0001062c 45f8fc00	lea	(v_objstate).w,a2
00010630 7000	moveq	#0,d0
00010632 10280023	move.b	obRespawnNo(a0),d0
00010636 67ce	beq.s	.wtf
00010638 08b200000002	bclr	#0,2(a2,d0.w)
0001063e 60c6	bra.s	.wtf
00010640 323c0010	move.w	#$10,d1
00010644 7000	moveq	#0,d0
00010646 1038fe88	move.b	(v_oscillate+$2A).w,d0
0001064a e248	lsr.w	#1,d0
0001064c 3638fe8a	move.w	(v_oscillate+$2C).w,d3
00010650 602e	bra.s	.square
00010652 323c0030	move.w	#$30,d1
00010656 7000	moveq	#0,d0
00010658 1038fe8c	move.b	(v_oscillate+$2E).w,d0
0001065c 3638fe8e	move.w	(v_oscillate+$30).w,d3
00010660 601e	bra.s	.square
00010662 323c0050	move.w	#$50,d1
00010666 7000	moveq	#0,d0
00010668 1038fe90	move.b	(v_oscillate+$32).w,d0
0001066c 3638fe92	move.w	(v_oscillate+$34).w,d3
00010670 600e	bra.s	.square
00010672 323c0070	move.w	#$70,d1
00010676 7000	moveq	#0,d0
00010678 1038fe94	move.b	(v_oscillate+$36).w,d0
0001067c 3638fe96	move.w	(v_oscillate+$38).w,d3
00010680 4a43	tst.w	d3
00010682 660a	bne.s	.loc_1068E
00010684 52280022	addq.b	#1,obStatus(a0)
00010688 022800030022	andi.b	#3,obStatus(a0)
0001068e 14280022	move.b	obStatus(a0),d2
00010692 02020003	andi.b	#3,d2
00010696 6616	bne.s	.loc_106AE
00010698 9041	sub.w	d1,d0
0001069a d0680034	add.w	fb_origX(a0),d0
0001069e 31400008	move.w	d0,obX(a0)
000106a2 4441	neg.w	d1
000106a4 d2680030	add.w	fb_origY(a0),d1
000106a8 3141000c	move.w	d1,obY(a0)
000106ac 4e75	rts	
000106ae 5302	subq.b	#1,d2
000106b0 661a	bne.s	.loc_106CC
000106b2 5341	subq.w	#1,d1
000106b4 9041	sub.w	d1,d0
000106b6 4440	neg.w	d0
000106b8 d0680030	add.w	fb_origY(a0),d0
000106bc 3140000c	move.w	d0,obY(a0)
000106c0 5241	addq.w	#1,d1
000106c2 d2680034	add.w	fb_origX(a0),d1
000106c6 31410008	move.w	d1,obX(a0)
000106ca 4e75	rts	
000106cc 5302	subq.b	#1,d2
000106ce 661a	bne.s	.loc_106EA
000106d0 5341	subq.w	#1,d1
000106d2 9041	sub.w	d1,d0
000106d4 4440	neg.w	d0
000106d6 d0680034	add.w	fb_origX(a0),d0
000106da 31400008	move.w	d0,obX(a0)
000106de 5241	addq.w	#1,d1
000106e0 d2680030	add.w	fb_origY(a0),d1
000106e4 3141000c	move.w	d1,obY(a0)
000106e8 4e75	rts	
000106ea 9041	sub.w	d1,d0
000106ec d0680030	add.w	fb_origY(a0),d0
000106f0 3140000c	move.w	d0,obY(a0)
000106f4 4441	neg.w	d1
000106f6 d2680034	add.w	fb_origX(a0),d1
000106fa 31410008	move.w	d1,obX(a0)
000106fe 4e75	rts	
00010782 7000	moveq	#0,d0
00010784 10280024	move.b	obRoutine(a0),d0
00010788 323b0006	move.w	SBall_Index(pc,d0.w),d1
0001078c 4efb1002	jmp	SBall_Index(pc,d1.w)
00010796 54280024	addq.b	#2,obRoutine(a0)
0001079a 217c000109560004	move.l	#Map_SBall,obMap(a0)
000107a2 317c03ba0002	move.w	#ArtTile_SYZ_Spikeball_Chain,obGfx(a0)
000107a8 117c00040001	move.b	#4,obRender(a0)
000107ae 117c00040018	move.b	#4,obPriority(a0)
000107b4 117c00080019	move.b	#8,obActWid(a0)
000107ba 31680008003a	move.w	obX(a0),sball_origX(a0)
000107c0 3168000c0038	move.w	obY(a0),sball_origY(a0)
000107c6 117c00980020	move.b	#$98,obColType(a0)
000107cc 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000107d2 6614	bne.s	.notlz
000107d4 117c00000020	move.b	#0,obColType(a0)
000107da 317c03100002	move.w	#ArtTile_LZ_Spikeball_Chain,obGfx(a0)
000107e0 217c0001095e0004	move.l	#Map_SBall2,obMap(a0)
000107e8 12280028	move.b	obSubtype(a0),d1
000107ec 020100f0	andi.b	#$F0,d1
000107f0 4881	ext.w	d1
000107f2 e741	asl.w	#3,d1
000107f4 3141003e	move.w	d1,sball_speed(a0)
000107f8 10280022	move.b	obStatus(a0),d0
000107fc e418	ror.b	#2,d0
000107fe 020000c0	andi.b	#$C0,d0
00010802 11400026	move.b	d0,obAngle(a0)
00010806 45e80029	lea	sball_childs(a0),a2
0001080a 12280028	move.b	obSubtype(a0),d1
0001080e 02410007	andi.w	#7,d1
00010812 14fc0000	move.b	#0,(a2)+
00010816 3601	move.w	d1,d3
00010818 e94b	lsl.w	#4,d3
0001081a 1143003c	move.b	d3,sball_radius(a0)
0001081e 5341	subq.w	#1,d1
00010820 6572	bcs.s	.fail
00010822 082800030028	btst	#3,obSubtype(a0)
00010828 6704	beq.s	.makechain
0001082a 5341	subq.w	#1,d1
0001082c 6566	bcs.s	.fail
0001082e 6100d25c	bsr.w	FindFreeObj
00010832 6660	bne.s	.fail
00010834 52280029	addq.b	#1,sball_childs(a0)
00010838 3a09	move.w	a1,d5
0001083a 0445d000	subi.w	#v_objspace&$FFFF,d5
0001083e ec4d	lsr.w	#object_size_bits,d5
00010840 0245007f	andi.w	#$7F,d5
00010844 14c5	move.b	d5,(a2)+
00010846 137c00040024	move.b	#4,obRoutine(a1)
00010852 236800040004	move.l	obMap(a0),obMap(a1)
00010858 336800020002	move.w	obGfx(a0),obGfx(a1)
0001085e 136800010001	move.b	obRender(a0),obRender(a1)
00010864 136800180018	move.b	obPriority(a0),obPriority(a1)
0001086a 136800190019	move.b	obActWid(a0),obActWid(a1)
00010870 136800200020	move.b	obColType(a0),obColType(a1)
00010876 04030010	subi.b	#$10,d3
0001087a 1343003c	move.b	d3,sball_radius(a1)
0001087e 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00010884 660a	bne.s	.notlzagain
00010886 4a03	tst.b	d3
00010888 6606	bne.s	.notlzagain
0001088a 137c0002001a	move.b	#2,obFrame(a1)
00010890 51c9ff9c	dbf	d1,.makechain
00010894 3a08	move.w	a0,d5
00010896 0445d000	subi.w	#v_objspace&$FFFF,d5
0001089a ec4d	lsr.w	#object_size_bits,d5
0001089c 0245007f	andi.w	#$7F,d5
000108a0 14c5	move.b	d5,(a2)+
000108a2 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000108a8 660c	bne.s	SBall_Move
000108aa 117c008b0020	move.b	#$8B,obColType(a0)
000108b0 117c0001001a	move.b	#1,obFrame(a0)
000108b6 61000006	bsr.w	.movesub
000108ba 60000054	bra.w	.chkdel
000108be 3028003e	move.w	sball_speed(a0),d0
000108c2 d1680026	add.w	d0,obAngle(a0)
000108c6 10280026	move.b	obAngle(a0),d0
000108ca 4eb9000029da	jsr	(CalcSine).l
000108d0 34280038	move.w	sball_origY(a0),d2
000108d4 3628003a	move.w	sball_origX(a0),d3
000108d8 45e80029	lea	sball_childs(a0),a2
000108dc 7c00	moveq	#0,d6
000108de 1c1a	move.b	(a2)+,d6
000108e0 7800	moveq	#0,d4
000108e2 181a	move.b	(a2)+,d4
000108e4 ed4c	lsl.w	#object_size_bits,d4
000108e6 068400ffd000	addi.l	#v_objspace&$FFFFFF,d4
000108ec 2244	movea.l	d4,a1
000108ee 7800	moveq	#0,d4
000108f0 1829003c	move.b	sball_radius(a1),d4
000108f4 2a04	move.l	d4,d5
000108f6 c9c0	muls.w	d0,d4
000108f8 e084	asr.l	#8,d4
000108fa cbc1	muls.w	d1,d5
000108fc e085	asr.l	#8,d5
000108fe d842	add.w	d2,d4
00010900 da43	add.w	d3,d5
00010902 3344000c	move.w	d4,obY(a1)
00010906 33450008	move.w	d5,obX(a1)
0001090a 51ceffd4	dbf	d6,.loop
0001090e 4e75	rts	
00010910 3028003a	move.w	sball_origX(a0),d0
00010914 0240ff80	andi.w	#$FF80,d0
00010918 3238f700	move.w	(v_screenposx).w,d1
0001091c 04410080	subi.w	#128,d1
00010920 0241ff80	andi.w	#$FF80,d1
00010924 9041	sub.w	d1,d0
00010926 0c400280	cmpi.w	#128+320+192,d0
0001092a 62000006	bhi.w	.delete
0001092e 6000ccd4	bra.w	DisplaySprite
00010932 7400	moveq	#0,d2
00010934 45e80029	lea	sball_childs(a0),a2
00010938 141a	move.b	(a2)+,d2
0001093a 7000	moveq	#0,d0
0001093c 101a	move.b	(a2)+,d0
0001093e ed48	lsl.w	#object_size_bits,d0
00010940 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00010946 2240	movea.l	d0,a1
00010948 6100ccf8	bsr.w	DeleteChild
0001094c 51caffec	dbf	d2,.deleteloop
00010950 4e75	rts	
00010952 6000ccb0	bra.w	DisplaySprite
00010976 7000	moveq	#0,d0
00010978 10280024	move.b	obRoutine(a0),d0
0001097c 323b0006	move.w	BBall_Index(pc,d0.w),d1
00010980 4efb1002	jmp	BBall_Index(pc,d1.w)
00010988 54280024	addq.b	#2,obRoutine(a0)
0001098c 217c00010aa00004	move.l	#Map_BBall,obMap(a0)
00010994 317c03960002	move.w	#ArtTile_SYZ_Big_Spikeball,obGfx(a0)
0001099a 117c00040001	move.b	#4,obRender(a0)
000109a0 117c00040018	move.b	#4,obPriority(a0)
000109a6 117c00180019	move.b	#$18,obActWid(a0)
000109ac 31680008003a	move.w	obX(a0),bball_origX(a0)
000109b2 3168000c0038	move.w	obY(a0),bball_origY(a0)
000109b8 117c00860020	move.b	#$86,obColType(a0)
000109be 12280028	move.b	obSubtype(a0),d1
000109c2 020100f0	andi.b	#$F0,d1
000109c6 4881	ext.w	d1
000109c8 e741	asl.w	#3,d1
000109ca 3141003e	move.w	d1,bball_speed(a0)
000109ce 10280022	move.b	obStatus(a0),d0
000109d2 e418	ror.b	#2,d0
000109d4 020000c0	andi.b	#$C0,d0
000109d8 11400026	move.b	d0,obAngle(a0)
000109dc 117c0050003c	move.b	#$50,bball_radius(a0)
000109e2 7000	moveq	#0,d0
000109e4 10280028	move.b	obSubtype(a0),d0
000109e8 02400007	andi.w	#7,d0
000109ec d040	add.w	d0,d0
000109ee 323b0028	move.w	.index(pc,d0.w),d1
000109f2 4ebb1024	jsr	.index(pc,d1.w)
000109f6 3028003a	move.w	bball_origX(a0),d0
000109fa 0240ff80	andi.w	#$FF80,d0
000109fe 3238f700	move.w	(v_screenposx).w,d1
00010a02 04410080	subi.w	#128,d1
00010a06 0241ff80	andi.w	#$FF80,d1
00010a0a 9041	sub.w	d1,d0
00010a0c 0c400280	cmpi.w	#128+320+192,d0
00010a10 6200cc2e	bhi.w	DeleteObject
00010a14 6000cbee	bra.w	DisplaySprite
00010a20 4e75	rts	
00010a22 323c0060	move.w	#$60,d1
00010a26 7000	moveq	#0,d0
00010a28 1038fe6c	move.b	(v_oscillate+$E).w,d0
00010a2c 082800000022	btst	#0,obStatus(a0)
00010a32 6704	beq.s	.noflip1
00010a34 4440	neg.w	d0
00010a36 d041	add.w	d1,d0
00010a38 3228003a	move.w	bball_origX(a0),d1
00010a3c 9240	sub.w	d0,d1
00010a3e 31410008	move.w	d1,obX(a0)
00010a42 4e75	rts	
00010a44 323c0060	move.w	#$60,d1
00010a48 7000	moveq	#0,d0
00010a4a 1038fe6c	move.b	(v_oscillate+$E).w,d0
00010a4e 082800000022	btst	#0,obStatus(a0)
00010a54 6706	beq.s	.noflip2
00010a56 4440	neg.w	d0
00010a58 06400080	addi.w	#$80,d0
00010a5c 32280038	move.w	bball_origY(a0),d1
00010a60 9240	sub.w	d0,d1
00010a62 3141000c	move.w	d1,obY(a0)
00010a66 4e75	rts	
00010a68 3028003e	move.w	bball_speed(a0),d0
00010a6c d1680026	add.w	d0,obAngle(a0)
00010a70 10280026	move.b	obAngle(a0),d0
00010a74 4eb9000029da	jsr	(CalcSine).l
00010a7a 34280038	move.w	bball_origY(a0),d2
00010a7e 3628003a	move.w	bball_origX(a0),d3
00010a82 7800	moveq	#0,d4
00010a84 1828003c	move.b	bball_radius(a0),d4
00010a88 2a04	move.l	d4,d5
00010a8a c9c0	muls.w	d0,d4
00010a8c e084	asr.l	#8,d4
00010a8e cbc1	muls.w	d1,d5
00010a90 e085	asr.l	#8,d5
00010a92 d842	add.w	d2,d4
00010a94 da43	add.w	d3,d5
00010a96 3144000c	move.w	d4,obY(a0)
00010a9a 31450008	move.w	d5,obX(a0)
00010a9e 4e75	rts	
00010ad2 7000	moveq	#0,d0
00010ad4 10280024	move.b	obRoutine(a0),d0
00010ad8 323b0028	move.w	Elev_Index(pc,d0.w),d1
00010adc 4ebb1024	jsr	Elev_Index(pc,d1.w)
00010ae0 30280032	move.w	elev_origX(a0),d0
00010ae4 0240ff80	andi.w	#$FF80,d0
00010ae8 3238f700	move.w	(v_screenposx).w,d1
00010aec 04410080	subi.w	#128,d1
00010af0 0241ff80	andi.w	#$FF80,d1
00010af4 9041	sub.w	d1,d0
00010af6 0c400280	cmpi.w	#128+320+192,d0
00010afa 6200cb44	bhi.w	DeleteObject
00010afe 6000cb04	bra.w	DisplaySprite
00010b2a 54280024	addq.b	#2,obRoutine(a0)
00010b2e 7000	moveq	#0,d0
00010b30 10280028	move.b	obSubtype(a0),d0
00010b34 6a18	bpl.s	.normal
00010b36 58280024	addq.b	#4,obRoutine(a0)
00010b3a 0240007f	andi.w	#$7F,d0
00010b3e c0fc0006	mulu.w	#6,d0
00010b42 3140003c	move.w	d0,elev_dist(a0)
00010b46 3140003e	move.w	d0,objoff_3E(a0)
00010b4a 588f	addq.l	#4,sp
00010b4c 4e75	rts	
00010b4e e648	lsr.w	#3,d0
00010b50 0240001e	andi.w	#$1E,d0
00010b54 45fb00b4	lea	Elev_Var1(pc,d0.w),a2
00010b58 115a0019	move.b	(a2)+,obActWid(a0)
00010b5c 115a001a	move.b	(a2)+,obFrame(a0)
00010b60 7000	moveq	#0,d0
00010b62 10280028	move.b	obSubtype(a0),d0
00010b66 d040	add.w	d0,d0
00010b68 0240001e	andi.w	#$1E,d0
00010b6c 45fb009e	lea	Elev_Var2(pc,d0.w),a2
00010b70 101a	move.b	(a2)+,d0
00010b72 e548	lsl.w	#2,d0
00010b74 3140003c	move.w	d0,elev_dist(a0)
00010b78 115a0028	move.b	(a2)+,obSubtype(a0)
00010b7c 217c00010d480004	move.l	#Map_Elev,obMap(a0)
00010b84 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
00010b8a 117c00040001	move.b	#4,obRender(a0)
00010b90 117c00040018	move.b	#4,obPriority(a0)
00010b96 316800080032	move.w	obX(a0),elev_origX(a0)
00010b9c 3168000c0030	move.w	obY(a0),elev_origY(a0)
00010ba2 7200	moveq	#0,d1
00010ba4 12280019	move.b	obActWid(a0),d1
00010ba8 4eb90000744c	jsr	(PlatformObject).l
00010bae 60000026	bra.w	Elev_Types
00010bb2 7200	moveq	#0,d1
00010bb4 12280019	move.b	obActWid(a0),d1
00010bb8 4eb9000075c0	jsr	(ExitPlatform).l
00010bbe 3f280008	move.w	obX(a0),-(sp)
00010bc2 61000012	bsr.w	Elev_Types
00010bc6 341f	move.w	(sp)+,d2
00010bcc 6706	beq.s	.deleted
00010bce 4ef900007b2e	jmp	(MvSonicOnPtfm2).l
00010bd4 4e75	rts	
00010bd6 7000	moveq	#0,d0
00010bd8 10280028	move.b	obSubtype(a0),d0
00010bdc 0240000f	andi.w	#$F,d0
00010be0 d040	add.w	d0,d0
00010be2 323b0006	move.w	.index(pc,d0.w),d1
00010be6 4efb1002	jmp	.index(pc,d1.w)
00010bfe 4e75	rts	
00010c00 0c2800040024	cmpi.b	#4,obRoutine(a0)
00010c06 6604	bne.s	.notstanding
00010c08 52280028	addq.b	#1,obSubtype(a0)
00010c0c 4e75	rts	
00010c0e 610000a2	bsr.w	Elev_Move
00010c12 30280034	move.w	objoff_34(a0),d0
00010c16 4440	neg.w	d0
00010c18 d0680030	add.w	elev_origY(a0),d0
00010c1c 3140000c	move.w	d0,obY(a0)
00010c20 4e75	rts	
00010c22 6100008e	bsr.w	Elev_Move
00010c26 30280034	move.w	objoff_34(a0),d0
00010c2a d0680030	add.w	elev_origY(a0),d0
00010c2e 3140000c	move.w	d0,obY(a0)
00010c32 4e75	rts	
00010c34 6100007c	bsr.w	Elev_Move
00010c38 30280034	move.w	objoff_34(a0),d0
00010c3c e240	asr.w	#1,d0
00010c3e 4440	neg.w	d0
00010c40 d0680030	add.w	elev_origY(a0),d0
00010c44 3140000c	move.w	d0,obY(a0)
00010c48 30280034	move.w	objoff_34(a0),d0
00010c4c d0680032	add.w	elev_origX(a0),d0
00010c50 31400008	move.w	d0,obX(a0)
00010c54 4e75	rts	
00010c56 6100005a	bsr.w	Elev_Move
00010c5a 30280034	move.w	objoff_34(a0),d0
00010c5e e240	asr.w	#1,d0
00010c60 d0680030	add.w	elev_origY(a0),d0
00010c64 3140000c	move.w	d0,obY(a0)
00010c68 30280034	move.w	objoff_34(a0),d0
00010c6c 4440	neg.w	d0
00010c6e d0680032	add.w	elev_origX(a0),d0
00010c72 31400008	move.w	d0,obX(a0)
00010c76 4e75	rts	
00010c78 61000038	bsr.w	Elev_Move
00010c7c 30280034	move.w	objoff_34(a0),d0
00010c80 4440	neg.w	d0
00010c82 d0680030	add.w	elev_origY(a0),d0
00010c86 3140000c	move.w	d0,obY(a0)
00010c8a 4a280028	tst.b	obSubtype(a0)
00010c8e 67000004	beq.w	.typereset
00010c92 4e75	rts	
00010c94 082800030022	btst	#3,obStatus(a0)
00010c9a 6712	beq.s	.delete
00010c9c 08e900010022	bset	#1,obStatus(a1)
00010ca2 08a900030022	bclr	#3,obStatus(a1)
00010ca8 137c00020024	move.b	#2,obRoutine(a1)
00010cae 6000c990	bra.w	DeleteObject
00010cb2 30280038	move.w	objoff_38(a0),d0
00010cb6 4a28003a	tst.b	objoff_3A(a0)
00010cba 660c	bne.s	loc_10CC8
00010cbc 0c400800	cmpi.w	#$800,d0
00010cc0 640e	bhs.s	loc_10CD0
00010cc2 06400010	addi.w	#$10,d0
00010cc6 6008	bra.s	loc_10CD0
00010cc8 4a40	tst.w	d0
00010cca 6704	beq.s	loc_10CD0
00010ccc 04400010	subi.w	#$10,d0
00010cd0 31400038	move.w	d0,objoff_38(a0)
00010cd4 48c0	ext.l	d0
00010cd6 e180	asl.l	#8,d0
00010cd8 d0a80034	add.l	objoff_34(a0),d0
00010cdc 21400034	move.l	d0,objoff_34(a0)
00010ce0 4840	swap	d0
00010ce2 3428003c	move.w	elev_dist(a0),d2
00010ce6 b042	cmp.w	d2,d0
00010ce8 6306	bls.s	loc_10CF0
00010cea 117c0001003a	move.b	#1,objoff_3A(a0)
00010cf0 d442	add.w	d2,d2
00010cf2 b042	cmp.w	d2,d0
00010cf4 6604	bne.s	locret_10CFA
00010cf6 42280028	clr.b	obSubtype(a0)
00010cfa 4e75	rts	
00010cfc 5368003c	subq.w	#1,elev_dist(a0)
00010d00 6624	bne.s	.chkdel
00010d02 3168003e003c	move.w	objoff_3E(a0),elev_dist(a0)
00010d08 6100cd82	bsr.w	FindFreeObj
00010d0c 6618	bne.s	.chkdel
00010d14 336800080008	move.w	obX(a0),obX(a1)
00010d1a 3368000c000c	move.w	obY(a0),obY(a1)
00010d20 137c000e0028	move.b	#$E,obSubtype(a1)
00010d26 588f	addq.l	#4,sp
00010d28 30280008	move.w	obX(a0),d0
00010d2c 0240ff80	andi.w	#$FF80,d0
00010d30 3238f700	move.w	(v_screenposx).w,d1
00010d34 04410080	subi.w	#128,d1
00010d38 0241ff80	andi.w	#$FF80,d1
00010d3c 9041	sub.w	d1,d0
00010d3e 0c400280	cmpi.w	#128+320+192,d0
00010d42 6200c8fc	bhi.w	DeleteObject
00010d46 4e75	rts	
00010d5a 7000	moveq	#0,d0
00010d5c 10280024	move.b	obRoutine(a0),d0
00010d60 323b0028	move.w	Circ_Index(pc,d0.w),d1
00010d64 4ebb1024	jsr	Circ_Index(pc,d1.w)
00010d68 30280032	move.w	circ_origX(a0),d0
00010d6c 0240ff80	andi.w	#$FF80,d0
00010d70 3238f700	move.w	(v_screenposx).w,d1
00010d74 04410080	subi.w	#128,d1
00010d78 0241ff80	andi.w	#$FF80,d1
00010d7c 9041	sub.w	d1,d0
00010d7e 0c400280	cmpi.w	#128+320+192,d0
00010d82 6200c8bc	bhi.w	DeleteObject
00010d86 6000c87c	bra.w	DisplaySprite
00010d90 54280024	addq.b	#2,obRoutine(a0)
00010d94 217c00010e820004	move.l	#Map_Circ,obMap(a0)
00010d9c 317c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a0)
00010da2 117c00040001	move.b	#4,obRender(a0)
00010da8 117c00040018	move.b	#4,obPriority(a0)
00010dae 117c00180019	move.b	#$18,obActWid(a0)
00010db4 316800080032	move.w	obX(a0),circ_origX(a0)
00010dba 3168000c0030	move.w	obY(a0),circ_origY(a0)
00010dc0 7200	moveq	#0,d1
00010dc2 12280019	move.b	obActWid(a0),d1
00010dc6 4eb90000744c	jsr	(PlatformObject).l
00010dcc 6000001e	bra.w	Circ_Types
00010dd0 7200	moveq	#0,d1
00010dd2 12280019	move.b	obActWid(a0),d1
00010dd6 4eb9000075c0	jsr	(ExitPlatform).l
00010ddc 3f280008	move.w	obX(a0),-(sp)
00010de0 6100000a	bsr.w	Circ_Types
00010de4 341f	move.w	(sp)+,d2
00010de6 4ef900007b2e	jmp	(MvSonicOnPtfm2).l
00010dec 7000	moveq	#0,d0
00010dee 10280028	move.b	obSubtype(a0),d0
00010df2 0240000c	andi.w	#$C,d0
00010df6 e248	lsr.w	#1,d0
00010df8 323b0006	move.w	.index(pc,d0.w),d1
00010dfc 4efb1002	jmp	.index(pc,d1.w)
00010e04 1238fe80	move.b	(v_oscillate+$22).w,d1
00010e08 04010050	subi.b	#$50,d1
00010e0c 4881	ext.w	d1
00010e0e 1438fe84	move.b	(v_oscillate+$26).w,d2
00010e12 04020050	subi.b	#$50,d2
00010e16 4882	ext.w	d2
00010e18 082800000028	btst	#0,obSubtype(a0)
00010e1e 6704	beq.s	.noshift00a
00010e20 4441	neg.w	d1
00010e22 4442	neg.w	d2
00010e24 082800010028	btst	#1,obSubtype(a0)
00010e2a 6704	beq.s	.noshift00b
00010e2c 4441	neg.w	d1
00010e2e c342	exg.l	d1,d2
00010e30 d2680032	add.w	circ_origX(a0),d1
00010e34 31410008	move.w	d1,obX(a0)
00010e38 d4680030	add.w	circ_origY(a0),d2
00010e3c 3142000c	move.w	d2,obY(a0)
00010e40 4e75	rts	
00010e42 1238fe80	move.b	(v_oscillate+$22).w,d1
00010e46 04010050	subi.b	#$50,d1
00010e4a 4881	ext.w	d1
00010e4c 1438fe84	move.b	(v_oscillate+$26).w,d2
00010e50 04020050	subi.b	#$50,d2
00010e54 4882	ext.w	d2
00010e56 082800000028	btst	#0,obSubtype(a0)
00010e5c 6704	beq.s	.noshift04a
00010e5e 4441	neg.w	d1
00010e60 4442	neg.w	d2
00010e62 082800010028	btst	#1,obSubtype(a0)
00010e68 6704	beq.s	.noshift04b
00010e6a 4441	neg.w	d1
00010e6c c342	exg.l	d1,d2
00010e6e 4441	neg.w	d1
00010e70 d2680032	add.w	circ_origX(a0),d1
00010e74 31410008	move.w	d1,obX(a0)
00010e78 d4680030	add.w	circ_origY(a0),d2
00010e7c 3142000c	move.w	d2,obY(a0)
00010e80 4e75	rts	
00010e90 7000	moveq	#0,d0
00010e92 10280024	move.b	obRoutine(a0),d0
00010e96 323b0028	move.w	Stair_Index(pc,d0.w),d1
00010e9a 4ebb1024	jsr	Stair_Index(pc,d1.w)
00010e9e 30280030	move.w	stair_origX(a0),d0
00010ea2 0240ff80	andi.w	#$FF80,d0
00010ea6 3238f700	move.w	(v_screenposx).w,d1
00010eaa 04410080	subi.w	#128,d1
00010eae 0241ff80	andi.w	#$FF80,d1
00010eb2 9041	sub.w	d1,d0
00010eb4 0c400280	cmpi.w	#128+320+192,d0
00010eb8 6200c786	bhi.w	DeleteObject
00010ebc 6000c746	bra.w	DisplaySprite
00010ec6 54280024	addq.b	#2,obRoutine(a0)
00010eca 7638	moveq	#$38,d3
00010ecc 7801	moveq	#1,d4
00010ece 082800000022	btst	#0,obStatus(a0)
00010ed4 6704	beq.s	.notflipped
00010ed6 763b	moveq	#$3B,d3
00010ed8 78ff	moveq	#-1,d4
00010eda 34280008	move.w	obX(a0),d2
00010ede 2248	movea.l	a0,a1
00010ee0 7203	moveq	#3,d1
00010ee2 600e	bra.s	.makeblocks
00010ee4 6100cbbc	bsr.w	FindNextFreeObj
00010ee8 6600005c	bne.w	.fail
00010eec 137c00040024	move.b	#4,obRoutine(a1)
00010ef8 237c0001103c0004	move.l	#Map_Stair,obMap(a1)
00010f00 337c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a1)
00010f06 137c00040001	move.b	#4,obRender(a1)
00010f0c 137c00030018	move.b	#3,obPriority(a1)
00010f12 137c00100019	move.b	#$10,obActWid(a1)
00010f18 136800280028	move.b	obSubtype(a0),obSubtype(a1)
00010f1e 33420008	move.w	d2,obX(a1)
00010f22 3368000c000c	move.w	obY(a0),obY(a1)
00010f28 336800080030	move.w	obX(a0),stair_origX(a1)
00010f2e 3369000c0032	move.w	obY(a1),stair_origY(a1)
00010f34 06420020	addi.w	#$20,d2
00010f38 13430037	move.b	d3,objoff_37(a1)
00010f3c 2348003c	move.l	a0,stair_parent(a1)
00010f40 d604	add.b	d4,d3
00010f42 51c9ffa0	dbf	d1,.loop
00010f46 7000	moveq	#0,d0
00010f48 10280028	move.b	obSubtype(a0),d0
00010f4c 02400007	andi.w	#7,d0
00010f50 d040	add.w	d0,d0
00010f52 323b004e	move.w	Stair_TypeIndex(pc,d0.w),d1
00010f56 4ebb104a	jsr	Stair_TypeIndex(pc,d1.w)
00010f5a 2468003c	movea.l	stair_parent(a0),a2
00010f5e 7000	moveq	#0,d0
00010f60 10280037	move.b	objoff_37(a0),d0
00010f64 10320000	move.b	(a2,d0.w),d0
00010f68 d0680032	add.w	stair_origY(a0),d0
00010f6c 3140000c	move.w	d0,obY(a0)
00010f70 7200	moveq	#0,d1
00010f72 12280019	move.b	obActWid(a0),d1
00010f76 0641000b	addi.w	#$B,d1
00010f7a 343c0010	move.w	#$10,d2
00010f7e 363c0011	move.w	#$11,d3
00010f82 38280008	move.w	obX(a0),d4
00010f86 6100ea4e	bsr.w	SolidObject
00010f8a 4a04	tst.b	d4
00010f8c 6a04	bpl.s	loc_10F92
00010f8e 15440036	move.b	d4,objoff_36(a2)
00010f92 082800030022	btst	#3,obStatus(a0)
00010f98 6706	beq.s	locret_10FA0
00010f9a 157c00010036	move.b	#1,objoff_36(a2)
00010fa0 4e75	rts	
00010faa 4a680034	tst.w	objoff_34(a0)
00010fae 6610	bne.s	loc_10FC0
00010fb0 0c2800010036	cmpi.b	#1,objoff_36(a0)
00010fb6 6606	bne.s	locret_10FBE
00010fb8 317c001e0034	move.w	#$1E,objoff_34(a0)
00010fbe 4e75	rts	
00010fc0 53680034	subq.w	#1,objoff_34(a0)
00010fc4 66f8	bne.s	locret_10FBE
00010fc6 52280028	addq.b	#1,obSubtype(a0)
00010fca 4e75	rts	
00010fcc 4a680034	tst.w	objoff_34(a0)
00010fd0 660e	bne.s	loc_10FE0
00010fd2 4a280036	tst.b	objoff_36(a0)
00010fd6 6a06	bpl.s	locret_10FDE
00010fd8 317c003c0034	move.w	#$3C,objoff_34(a0)
00010fde 4e75	rts	
00010fe0 53680034	subq.w	#1,objoff_34(a0)
00010fe4 6606	bne.s	loc_10FEC
00010fe6 52280028	addq.b	#1,obSubtype(a0)
00010fea 4e75	rts	
00010fec 43e80038	lea	objoff_38(a0),a1
00010ff0 30280034	move.w	objoff_34(a0),d0
00010ff4 e408	lsr.b	#2,d0
00010ff6 02000001	andi.b	#1,d0
00010ffa 12c0	move.b	d0,(a1)+
00010ffc 0a000001	eori.b	#1,d0
00011000 12c0	move.b	d0,(a1)+
00011002 0a000001	eori.b	#1,d0
00011006 12c0	move.b	d0,(a1)+
00011008 0a000001	eori.b	#1,d0
0001100c 12c0	move.b	d0,(a1)+
0001100e 4e75	rts	
00011010 43e80038	lea	objoff_38(a0),a1
00011014 0c110080	cmpi.b	#$80,(a1)
00011018 671e	beq.s	locret_11038
0001101a 5211	addq.b	#1,(a1)
0001101c 7200	moveq	#0,d1
0001101e 1219	move.b	(a1)+,d1
00011020 4841	swap	d1
00011022 e289	lsr.l	#1,d1
00011024 2401	move.l	d1,d2
00011026 e289	lsr.l	#1,d1
00011028 2601	move.l	d1,d3
0001102a d682	add.l	d2,d3
0001102c 4841	swap	d1
0001102e 4842	swap	d2
00011030 4843	swap	d3
00011032 12c3	move.b	d3,(a1)+
00011034 12c2	move.b	d2,(a1)+
00011036 12c1	move.b	d1,(a1)+
00011038 4e75	rts	
0001103a 4e75	rts	
00011044 7000	moveq	#0,d0
00011046 10280024	move.b	obRoutine(a0),d0
0001104a 323b0006	move.w	Pyl_Index(pc,d0.w),d1
0001104e 4efb1002	jmp	Pyl_Index(pc,d1.w)
00011056 54280024	addq.b	#2,obRoutine(a0)
0001105a 217c000110960004	move.l	#Map_Pylon,obMap(a0)
00011062 317c83cc0002	move.w	#ArtTile_SLZ_Pylon|Tile_Prio,obGfx(a0)
00011068 117c00100019	move.b	#$10,obActWid(a0)
0001106e 2238f700	move.l	(v_screenposx).w,d1
00011072 d281	add.l	d1,d1
00011074 4841	swap	d1
00011076 4441	neg.w	d1
00011078 31410008	move.w	d1,obX(a0)
0001107c 2238f704	move.l	(v_screenposy).w,d1
00011080 d281	add.l	d1,d1
00011082 4841	swap	d1
00011084 0241003f	andi.w	#$3F,d1
00011088 4441	neg.w	d1
0001108a 06410100	addi.w	#$100,d1
0001108e 3141000a	move.w	d1,obScreenY(a0)
00011092 6000c570	bra.w	DisplaySprite
000110c6 7000	moveq	#0,d0
000110c8 10280024	move.b	obRoutine(a0),d0
000110cc 323b0006	move.w	Surf_Index(pc,d0.w),d1
000110d0 4efb1002	jmp	Surf_Index(pc,d1.w)
000110d8 54280024	addq.b	#2,obRoutine(a0)
000110dc 217c0001116c0004	move.l	#Map_Surf,obMap(a0)
000110e4 317cc3000002	move.w	#ArtTile_LZ_Water_Surface|Tile_Pal3|Tile_Prio,obGfx(a0)
000110ea 117c00040001	move.b	#4,obRender(a0)
000110f0 117c00800019	move.b	#$80,obActWid(a0)
000110f6 316800080030	move.w	obX(a0),surf_origX(a0)
000110fc 3238f700	move.w	(v_screenposx).w,d1
00011100 0241ffe0	andi.w	#$FFE0,d1
00011104 d2680030	add.w	surf_origX(a0),d1
00011108 08380000fe05	btst	#0,(v_framebyte).w
0001110e 6704	beq.s	.even
00011110 06410020	addi.w	#$20,d1
00011114 31410008	move.w	d1,obX(a0)
00011118 3238f646	move.w	(v_waterpos1).w,d1
0001111c 3141000c	move.w	d1,obY(a0)
00011120 4a280032	tst.b	surf_freeze(a0)
00011124 6614	bne.s	.stopped
00011126 08380007f605	btst	#bitStart,(v_jpadpress1).w
0001112c 671c	beq.s	.animate
0001112e 5628001a	addq.b	#3,obFrame(a0)
00011132 117c00010032	move.b	#1,surf_freeze(a0)
00011138 602e	bra.s	.display
0001113a 4a78f63a	tst.w	(f_pause).w
0001113e 6628	bne.s	.display
00011140 117c00000032	move.b	#0,surf_freeze(a0)
00011146 5728001a	subq.b	#3,obFrame(a0)
0001114a 5328001e	subq.b	#1,obTimeFrame(a0)
0001114e 6a18	bpl.s	.display
00011150 117c0007001e	move.b	#7,obTimeFrame(a0)
00011156 5228001a	addq.b	#1,obFrame(a0)
0001115a 0c280003001a	cmpi.b	#3,obFrame(a0)
00011160 6506	blo.s	.display
00011162 117c0000001a	move.b	#0,obFrame(a0)
00011168 6000c49a	bra.w	DisplaySprite
00011206 7000	moveq	#0,d0
00011208 10280024	move.b	obRoutine(a0),d0
0001120c 323b0006	move.w	Pole_Index(pc,d0.w),d1
00011210 4efb1002	jmp	Pole_Index(pc,d1.w)
0001121a 54280024	addq.b	#2,obRoutine(a0)
0001121e 217c000113220004	move.l	#Map_Pole,obMap(a0)
00011226 317c43de0002	move.w	#ArtTile_LZ_Pole|Tile_Pal3,obGfx(a0)
0001122c 117c00040001	move.b	#4,obRender(a0)
00011232 117c00080019	move.b	#8,obActWid(a0)
00011238 117c00040018	move.b	#4,obPriority(a0)
0001123e 117c00e10020	move.b	#$E1,obColType(a0)
00011244 7000	moveq	#0,d0
00011246 10280028	move.b	obSubtype(a0),d0
0001124a c0fc003c	mulu.w	#60,d0
0001124e 31400030	move.w	d0,pole_time(a0)
00011252 4a280032	tst.b	pole_grabbed(a0)
00011256 6770	beq.s	.grab
00011258 4a680030	tst.w	pole_time(a0)
0001125c 670e	beq.s	.moveup
0001125e 53680030	subq.w	#1,pole_time(a0)
00011262 6608	bne.s	.moveup
00011264 117c0001001a	move.b	#1,obFrame(a0)
0001126a 6046	bra.s	.release
0001126c 43f8d000	lea	(v_player).w,a1
00011270 3028000c	move.w	obY(a0),d0
00011274 04400018	subi.w	#$18,d0
00011278 08380000f604	btst	#bitUp,(v_jpadhold1).w
0001127e 670e	beq.s	.movedown
00011280 5369000c	subq.w	#1,obY(a1)
00011284 b069000c	cmp.w	obY(a1),d0
00011288 6504	blo.s	.movedown
0001128a 3340000c	move.w	d0,obY(a1)
0001128e 06400024	addi.w	#$24,d0
00011292 08380001f604	btst	#bitDn,(v_jpadhold1).w
00011298 670e	beq.s	.letgo
0001129a 5269000c	addq.w	#1,obY(a1)
0001129e b069000c	cmp.w	obY(a1),d0
000112a2 6404	bhs.s	.letgo
000112a4 3340000c	move.w	d0,obY(a1)
000112a8 1038f603	move.b	(v_jpadpress2).w,d0
000112ac 02400070	andi.w	#btnABC,d0
000112b0 676c	beq.s	Pole_Display
000112b2 42280020	clr.b	obColType(a0)
000112b6 54280024	addq.b	#2,obRoutine(a0)
000112ba 4238f7c8	clr.b	(f_playerctrl).w
000112be 4238f7c9	clr.b	(f_wtunnelallow).w
000112c2 42280032	clr.b	pole_grabbed(a0)
000112c6 6056	bra.s	Pole_Display
000112c8 4a280021	tst.b	obColProp(a0)
000112cc 6750	beq.s	Pole_Display
000112ce 43f8d000	lea	(v_player).w,a1
000112d2 30280008	move.w	obX(a0),d0
000112d6 06400014	addi.w	#$14,d0
000112da b0690008	cmp.w	obX(a1),d0
000112de 643e	bhs.s	Pole_Display
000112e0 42280021	clr.b	obColProp(a0)
000112e4 0c2900040024	cmpi.b	#4,obRoutine(a1)
000112ea 6432	bhs.s	Pole_Display
000112ec 42690010	clr.w	obVelX(a1)
000112f0 42690012	clr.w	obVelY(a1)
000112f4 30280008	move.w	obX(a0),d0
000112f8 06400014	addi.w	#$14,d0
000112fc 33400008	move.w	d0,obX(a1)
00011300 08a900000022	bclr	#0,obStatus(a1)
00011306 137c0011001c	move.b	#id_Hang,obAnim(a1)
0001130c 11fc0001f7c8	move.b	#1,(f_playerctrl).w
00011312 11fc0001f7c9	move.b	#1,(f_wtunnelallow).w
00011318 117c00010032	move.b	#1,pole_grabbed(a0)
0001131e 6000e38c	bra.w	RememberState
00011346 7000	moveq	#0,d0
00011348 10280024	move.b	obRoutine(a0),d0
0001134c 323b0006	move.w	Flap_Index(pc,d0.w),d1
00011350 4efb1002	jmp	Flap_Index(pc,d1.w)
00011358 54280024	addq.b	#2,obRoutine(a0)
0001135c 217c000113f20004	move.l	#Map_Flap,obMap(a0)
00011364 317c43280002	move.w	#ArtTile_LZ_Flapping_Door|Tile_Pal3,obGfx(a0)
0001136a 002800040001	ori.b	#4,obRender(a0)
00011370 117c00280019	move.b	#$28,obActWid(a0)
00011376 7000	moveq	#0,d0
00011378 10280028	move.b	obSubtype(a0),d0
0001137c c0fc003c	mulu.w	#60,d0
00011380 31400032	move.w	d0,flap_time(a0)
00011384 53680030	subq.w	#1,flap_wait(a0)
00011388 6a1c	bpl.s	.wait
0001138a 316800320030	move.w	flap_time(a0),flap_wait(a0)
00011390 08680000001c	bchg	#0,obAnim(a0)
00011396 4a280001	tst.b	obRender(a0)
0001139a 6a0a	bpl.s	.nosound
0001139c 303c00bb	move.w	#sfx_Door,d0
000113a0 4eb90000139c	jsr	(QueueSound2).l
000113a6 43f9000113e2	lea	(Ani_Flap).l,a1
000113ac 6100936a	bsr.w	AnimateSprite
000113b0 4238f7c9	clr.b	(f_wtunnelallow).w
000113b4 4a28001a	tst.b	obFrame(a0)
000113b8 6624	bne.s	.display
000113ba 3038d008	move.w	(v_player+obX).w,d0
000113be b0680008	cmp.w	obX(a0),d0
000113c2 641a	bhs.s	.display
000113c4 11fc0001f7c9	move.b	#1,(f_wtunnelallow).w
000113ca 323c0013	move.w	#$13,d1
000113ce 343c0020	move.w	#$20,d2
000113d2 3602	move.w	d2,d3
000113d4 5243	addq.w	#1,d3
000113d6 38280008	move.w	obX(a0),d4
000113da 6100e5fa	bsr.w	SolidObject
000113de 6000e2cc	bra.w	RememberState
0001141a 7000	moveq	#0,d0
0001141c 10280024	move.b	obRoutine(a0),d0
00011420 323b0006	move.w	Invis_Index(pc,d0.w),d1
00011424 4efb1002	jmp	Invis_Index(pc,d1.w)
0001142c 54280024	addq.b	#2,obRoutine(a0)
00011430 217c000114b60004	move.l	#Map_Invis,obMap(a0)
00011438 317c86800002	move.w	#ArtTile_Monitor|Tile_Prio,obGfx(a0)
0001143e 002800040001	ori.b	#4,obRender(a0)
00011444 10280028	move.b	obSubtype(a0),d0
00011448 1200	move.b	d0,d1
0001144a 024000f0	andi.w	#$F0,d0
0001144e 06400010	addi.w	#$10,d0
00011452 e248	lsr.w	#1,d0
00011454 11400019	move.b	d0,obActWid(a0)
00011458 0241000f	andi.w	#$F,d1
0001145c 5241	addq.w	#1,d1
0001145e e749	lsl.w	#3,d1
00011460 11410016	move.b	d1,obHeight(a0)
00011464 6100c418	bsr.w	ChkObjectVisible
00011468 661c	bne.s	.chkdel
0001146a 7200	moveq	#0,d1
0001146c 12280019	move.b	obActWid(a0),d1
00011470 0641000b	addi.w	#$B,d1
00011474 7400	moveq	#0,d2
00011476 14280016	move.b	obHeight(a0),d2
0001147a 3602	move.w	d2,d3
0001147c 5243	addq.w	#1,d3
0001147e 38280008	move.w	obX(a0),d4
00011482 6100e598	bsr.w	SolidObject71
00011486 30280008	move.w	obX(a0),d0
0001148a 0240ff80	andi.w	#$FF80,d0
0001148e 3238f700	move.w	(v_screenposx).w,d1
00011492 04410080	subi.w	#128,d1
00011496 0241ff80	andi.w	#$FF80,d1
0001149a 9041	sub.w	d1,d0
0001149c 0c400280	cmpi.w	#128+320+192,d0
000114a0 620e	bhi.s	.delete
000114a2 4a78fe08	tst.w	(v_debuguse).w
000114a6 6706	beq.s	.nodisplay
000114a8 4ef90000d604	jmp	(DisplaySprite).l
000114ae 4e75	rts	
000114b0 4ef90000d640	jmp	(DeleteObject).l
000114fc 7000	moveq	#0,d0
000114fe 10280024	move.b	obRoutine(a0),d0
00011502 323b0006	move.w	Fan_Index(pc,d0.w),d1
00011506 4efb1002	jmp	Fan_Index(pc,d1.w)
0001150e 54280024	addq.b	#2,obRoutine(a0)
00011512 217c000116100004	move.l	#Map_Fan,obMap(a0)
0001151a 317c43a00002	move.w	#ArtTile_SLZ_Fan|Tile_Pal3,obGfx(a0)
00011520 002800040001	ori.b	#4,obRender(a0)
00011526 117c00100019	move.b	#$10,obActWid(a0)
0001152c 117c00040018	move.b	#4,obPriority(a0)
00011532 082800010028	btst	#1,obSubtype(a0)
00011538 661a	bne.s	.blow
0001153a 53680030	subq.w	#1,fan_time(a0)
0001153e 6a14	bpl.s	.blow
00011540 317c00780030	move.w	#120,fan_time(a0)
00011546 086800000032	bchg	#0,fan_switch(a0)
0001154c 6706	beq.s	.blow
0001154e 317c00b40030	move.w	#180,fan_time(a0)
00011554 4a280032	tst.b	fan_switch(a0)
00011558 66000092	bne.w	.chkdel
0001155c 43f8d000	lea	(v_player).w,a1
00011560 30290008	move.w	obX(a1),d0
00011564 90680008	sub.w	obX(a0),d0
00011568 082800000022	btst	#0,obStatus(a0)
0001156e 6602	bne.s	.chksonic
00011570 4440	neg.w	d0
00011572 06400050	addi.w	#$50,d0
00011576 0c4000f0	cmpi.w	#$F0,d0
0001157a 643e	bhs.s	.animate
0001157c 3229000c	move.w	obY(a1),d1
00011580 06410060	addi.w	#$60,d1
00011584 9268000c	sub.w	obY(a0),d1
00011588 6530	bcs.s	.animate
0001158a 0c410070	cmpi.w	#$70,d1
0001158e 642a	bhs.s	.animate
00011590 04400050	subi.w	#$50,d0
00011594 6404	bcc.s	.faraway
00011596 4640	not.w	d0
00011598 d040	add.w	d0,d0
0001159a 06400060	addi.w	#$60,d0
0001159e 082800000022	btst	#0,obStatus(a0)
000115a4 6602	bne.s	.right
000115a6 4440	neg.w	d0
000115a8 4400	neg.b	d0
000115aa e840	asr.w	#4,d0
000115ac 082800000028	btst	#0,obSubtype(a0)
000115b2 6702	beq.s	.movesonic
000115b4 4440	neg.w	d0
000115b6 d1690008	add.w	d0,obX(a1)
000115ba 5328001e	subq.b	#1,obTimeFrame(a0)
000115be 6a2c	bpl.s	.chkdel
000115c0 117c0000001e	move.b	#0,obTimeFrame(a0)
000115c6 5228001b	addq.b	#1,obAniFrame(a0)
000115ca 0c280003001b	cmpi.b	#3,obAniFrame(a0)
000115d0 6506	blo.s	.noreset
000115d2 117c0000001b	move.b	#0,obAniFrame(a0)
000115d8 7000	moveq	#0,d0
000115da 082800000028	btst	#0,obSubtype(a0)
000115e0 6702	beq.s	.noflip
000115e2 7002	moveq	#2,d0
000115e4 d028001b	add.b	obAniFrame(a0),d0
000115e8 1140001a	move.b	d0,obFrame(a0)
000115ec 6100c016	bsr.w	DisplaySprite
000115f0 30280008	move.w	obX(a0),d0
000115f4 0240ff80	andi.w	#$FF80,d0
000115f8 3238f700	move.w	(v_screenposx).w,d1
000115fc 04410080	subi.w	#128,d1
00011600 0241ff80	andi.w	#$FF80,d1
00011604 9041	sub.w	d1,d0
00011606 0c400280	cmpi.w	#128+320+192,d0
0001160a 6200c034	bhi.w	DeleteObject
0001160e 4e75	rts	
0001163c 7000	moveq	#0,d0
0001163e 10280024	move.b	obRoutine(a0),d0
00011642 323b002c	move.w	See_Index(pc,d0.w),d1
00011646 4ebb1028	jsr	See_Index(pc,d1.w)
0001164a 30280030	move.w	see_origX(a0),d0
0001164e 0240ff80	andi.w	#$FF80,d0
00011652 3238f700	move.w	(v_screenposx).w,d1
00011656 04410080	subi.w	#$80,d1
0001165a 0241ff80	andi.w	#$FF80,d1
0001165e 9041	sub.w	d1,d0
00011660 6b00bfde	bmi.w	DeleteObject
00011664 0c400280	cmpi.w	#$280,d0
00011668 6200bfd6	bhi.w	DeleteObject
0001166c 6000bf96	bra.w	DisplaySprite
0001167c 54280024	addq.b	#2,obRoutine(a0)
00011680 217c000119a40004	move.l	#Map_Seesaw,obMap(a0)
00011688 317c03740002	move.w	#ArtTile_SLZ_Seesaw,obGfx(a0)
0001168e 002800040001	ori.b	#4,obRender(a0)
00011694 117c00040018	move.b	#4,obPriority(a0)
0001169a 117c00300019	move.b	#$30,obActWid(a0)
000116a0 316800080030	move.w	obX(a0),see_origX(a0)
000116a6 4a280028	tst.b	obSubtype(a0)
000116aa 6626	bne.s	.noball
000116ac 6100c3f4	bsr.w	FindNextFreeObj
000116b0 6620	bne.s	.noball
000116b8 5c290024	addq.b	#6,obRoutine(a1)
000116bc 336800080008	move.w	obX(a0),obX(a1)
000116c2 3368000c000c	move.w	obY(a0),obY(a1)
000116c8 136800220022	move.b	obStatus(a0),obStatus(a1)
000116ce 2348003c	move.l	a0,see_parent(a1)
000116d2 082800000022	btst	#0,obStatus(a0)
000116d8 6706	beq.s	.noflip
000116da 117c0002001a	move.b	#2,obFrame(a0)
000116e0 1168001a003a	move.b	obFrame(a0),see_frame(a0)
000116e6 1228003a	move.b	see_frame(a0),d1
000116ea 6100007a	bsr.w	See_ChgFrame
000116ee 45f900011944	lea	(See_DataSlope).l,a2
000116f4 08280000001a	btst	#0,obFrame(a0)
000116fa 6706	beq.s	.notflat
000116fc 45f900011974	lea	(See_DataFlat).l,a2
00011702 43f8d000	lea	(v_player).w,a1
00011706 316900120038	move.w	obVelY(a1),see_speed(a0)
0001170c 323c0030	move.w	#$30,d1
00011710 4eb900007520	jsr	(SlopeObject).l
00011716 4e75	rts	
00011718 61000030	bsr.w	See_ChkSide
0001171c 45f900011944	lea	(See_DataSlope).l,a2
00011722 08280000001a	btst	#0,obFrame(a0)
00011728 6706	beq.s	.notflat
0001172a 45f900011974	lea	(See_DataFlat).l,a2
00011730 323c0030	move.w	#$30,d1
00011734 4eb9000075c0	jsr	(ExitPlatform).l
0001173a 323c0030	move.w	#$30,d1
0001173e 34280008	move.w	obX(a0),d2
00011742 4eb90000852a	jsr	(SlopeObject2).l
00011748 4e75	rts	
0001174a 7202	moveq	#2,d1
0001174c 43f8d000	lea	(v_player).w,a1
00011750 30280008	move.w	obX(a0),d0
00011754 90690008	sub.w	obX(a1),d0
00011758 6404	bcc.s	.leftside
0001175a 4440	neg.w	d0
0001175c 7200	moveq	#0,d1
0001175e 0c400008	cmpi.w	#8,d0
00011762 6402	bhs.s	See_ChgFrame
00011764 7201	moveq	#1,d1
00011766 1028001a	move.b	obFrame(a0),d0
0001176a b001	cmp.b	d1,d0
0001176c 6722	beq.s	.noflip
0001176e 6402	bcc.s	.loc_11772
00011770 5400	addq.b	#2,d0
00011772 5300	subq.b	#1,d0
00011774 1140001a	move.b	d0,obFrame(a0)
00011778 1141003a	move.b	d1,see_frame(a0)
0001177c 08a800000001	bclr	#0,obRender(a0)
00011782 08280001001a	btst	#1,obFrame(a0)
00011788 6706	beq.s	.noflip
0001178a 08e800000001	bset	#0,obRender(a0)
00011790 4e75	rts	
00011792 54280024	addq.b	#2,obRoutine(a0)
00011796 217c000119e60004	move.l	#Map_SSawBall,obMap(a0)
0001179e 317c04f00002	move.w	#ArtTile_SLZ_Spikeball,obGfx(a0)
000117a4 002800040001	ori.b	#4,obRender(a0)
000117aa 117c00040018	move.b	#4,obPriority(a0)
000117b0 117c008b0020	move.b	#$8B,obColType(a0)
000117b6 117c000c0019	move.b	#$C,obActWid(a0)
000117bc 316800080030	move.w	obX(a0),see_origX(a0)
000117c2 066800280008	addi.w	#$28,obX(a0)
000117c8 3168000c0034	move.w	obY(a0),see_origY(a0)
000117ce 117c0001001a	move.b	#1,obFrame(a0)
000117d4 082800000022	btst	#0,obStatus(a0)
000117da 670c	beq.s	See_MoveSpike
000117dc 046800500008	subi.w	#$50,obX(a0)
000117e2 117c0002003a	move.b	#2,see_frame(a0)
000117e8 2268003c	movea.l	see_parent(a0),a1
000117ec 7000	moveq	#0,d0
000117ee 1028003a	move.b	see_frame(a0),d0
000117f2 9029003a	sub.b	see_frame(a1),d0
000117f6 6746	beq.s	loc_1183E
000117f8 6402	bcc.s	loc_117FC
000117fa 4400	neg.b	d0
000117fc 323cf7e8	move.w	#-$818,d1
00011800 343cfeec	move.w	#-$114,d2
00011804 0c000001	cmpi.b	#1,d0
00011808 6718	beq.s	loc_11822
0001180a 323cf510	move.w	#-$AF0,d1
0001180e 343cff34	move.w	#-$CC,d2
00011812 0c690a000038	cmpi.w	#$A00,obBossY(a1)
00011818 6d08	blt.s	loc_11822
0001181a 323cf200	move.w	#-$E00,d1
0001181e 343cff60	move.w	#-$A0,d2
00011822 31410012	move.w	d1,obVelY(a0)
00011826 31420010	move.w	d2,obVelX(a0)
0001182a 30280008	move.w	obX(a0),d0
0001182e 90680030	sub.w	see_origX(a0),d0
00011832 6404	bcc.s	loc_11838
00011834 44680010	neg.w	obVelX(a0)
00011838 54280024	addq.b	#2,obRoutine(a0)
0001183c 603e	bra.s	See_SpikeFall
0001183e 45f90001193a	lea	(See_Speeds).l,a2
00011844 7000	moveq	#0,d0
00011846 1029001a	move.b	obFrame(a1),d0
0001184a 343c0028	move.w	#$28,d2
0001184e 32280008	move.w	obX(a0),d1
00011852 92680030	sub.w	see_origX(a0),d1
00011856 6404	bcc.s	loc_1185C
00011858 4442	neg.w	d2
0001185a 5440	addq.w	#2,d0
0001185c d040	add.w	d0,d0
0001185e 32280034	move.w	see_origY(a0),d1
00011862 d2720000	add.w	(a2,d0.w),d1
00011866 3141000c	move.w	d1,obY(a0)
0001186a d4680030	add.w	see_origX(a0),d2
0001186e 31420008	move.w	d2,obX(a0)
00011872 4268000e	clr.w	obY+2(a0)
00011876 4268000a	clr.w	obX+2(a0)
0001187a 4e75	rts	
0001187c 4a680012	tst.w	obVelY(a0)
00011880 6a18	bpl.s	loc_1189A
00011882 6100bd2e	bsr.w	ObjectFall
00011886 30280034	move.w	see_origY(a0),d0
0001188a 0440002f	subi.w	#$2F,d0
0001188e b068000c	cmp.w	obY(a0),d0
00011892 6e04	bgt.s	locret_11898
00011894 6100bd1c	bsr.w	ObjectFall
00011898 4e75	rts	
0001189a 6100bd16	bsr.w	ObjectFall
0001189e 2268003c	movea.l	see_parent(a0),a1
000118a2 45f90001193a	lea	(See_Speeds).l,a2
000118a8 7000	moveq	#0,d0
000118aa 1029001a	move.b	obFrame(a1),d0
000118ae 32280008	move.w	obX(a0),d1
000118b2 92680030	sub.w	see_origX(a0),d1
000118b6 6402	bcc.s	loc_118BA
000118b8 5440	addq.w	#2,d0
000118ba d040	add.w	d0,d0
000118bc 32280034	move.w	see_origY(a0),d1
000118c0 d2720000	add.w	(a2,d0.w),d1
000118c4 b268000c	cmp.w	obY(a0),d1
000118c8 6e6e	bgt.s	locret_11938
000118ca 2268003c	movea.l	see_parent(a0),a1
000118ce 7202	moveq	#2,d1
000118d0 4a680010	tst.w	obVelX(a0)
000118d4 6b02	bmi.s	See_Spring
000118d6 7200	moveq	#0,d1
000118d8 1341003a	move.b	d1,objoff_3A(a1)
000118dc 1141003a	move.b	d1,see_frame(a0)
000118e0 b229001a	cmp.b	obFrame(a1),d1
000118e4 6746	beq.s	loc_1192C
000118e6 08a900030022	bclr	#3,obStatus(a1)
000118ec 673e	beq.s	loc_1192C
000118ee 42290025	clr.b	ob2ndRout(a1)
000118f2 137c00020024	move.b	#2,obRoutine(a1)
000118f8 45f8d000	lea	(v_player).w,a2
000118fc 356800120012	move.w	obVelY(a0),obVelY(a2)
00011902 446a0012	neg.w	obVelY(a2)
00011906 08ea00010022	bset	#1,obStatus(a2)
0001190c 08aa00030022	bclr	#3,obStatus(a2)
00011912 422a003c	clr.b	jumping(a2)
00011916 157c0010001c	move.b	#id_Spring,obAnim(a2)
0001191c 157c00020024	move.b	#2,obRoutine(a2)
00011922 303c00cc	move.w	#sfx_Spring,d0
00011926 4eb90000139c	jsr	(QueueSound2).l
0001192c 42680010	clr.w	obVelX(a0)
00011930 42680012	clr.w	obVelY(a0)
00011934 55280024	subq.b	#2,obRoutine(a0)
00011938 4e75	rts	
000119f6 7000	moveq	#0,d0
000119f8 10280024	move.b	obRoutine(a0),d0
000119fc 323b0006	move.w	Bom_Index(pc,d0.w),d1
00011a00 4efb1002	jmp	Bom_Index(pc,d1.w)
00011a0c 54280024	addq.b	#2,obRoutine(a0)
00011a10 217c00011c280004	move.l	#Map_Bomb,obMap(a0)
00011a18 317c04000002	move.w	#ArtTile_Bomb,obGfx(a0)
00011a1e 002800040001	ori.b	#4,obRender(a0)
00011a24 117c00030018	move.b	#3,obPriority(a0)
00011a2a 117c000c0019	move.b	#$C,obActWid(a0)
00011a30 10280028	move.b	obSubtype(a0),d0
00011a34 6706	beq.s	loc_11A3C
00011a36 11400024	move.b	d0,obRoutine(a0)
00011a3a 4e75	rts	
00011a3c 117c009a0020	move.b	#$9A,obColType(a0)
00011a42 086800000022	bchg	#0,obStatus(a0)
00011a48 7000	moveq	#0,d0
00011a4a 10280025	move.b	ob2ndRout(a0),d0
00011a4e 323b0014	move.w	.index(pc,d0.w),d1
00011a52 4ebb1010	jsr	.index(pc,d1.w)
00011a56 43f900011c08	lea	(Ani_Bomb).l,a1
00011a5c 61008cba	bsr.w	AnimateSprite
00011a60 6000dc4a	bra.w	RememberState
00011a6a 61000066	bsr.w	.chksonic
00011a6e 53680030	subq.w	#1,bom_time(a0)
00011a72 6a22	bpl.s	.noflip
00011a74 54280025	addq.b	#2,ob2ndRout(a0)
00011a78 317c05ff0030	move.w	#1535,bom_time(a0)
00011a7e 317c00100010	move.w	#$10,obVelX(a0)
00011a84 117c0001001c	move.b	#1,obAnim(a0)
00011a8a 086800000022	bchg	#0,obStatus(a0)
00011a90 6704	beq.s	.noflip
00011a92 44680010	neg.w	obVelX(a0)
00011a96 4e75	rts	
00011a98 61000038	bsr.w	.chksonic
00011a9c 53680030	subq.w	#1,bom_time(a0)
00011aa0 6b06	bmi.s	.stopwalking
00011aa2 6100bb3a	bsr.w	SpeedToPos
00011aa6 4e75	rts	
00011aa8 55280025	subq.b	#2,ob2ndRout(a0)
00011aac 317c00b30030	move.w	#179,bom_time(a0)
00011ab2 42680010	clr.w	obVelX(a0)
00011ab6 117c0000001c	move.b	#0,obAnim(a0)
00011abc 4e75	rts	
00011abe 53680030	subq.w	#1,bom_time(a0)
00011ac2 6a0c	bpl.s	.noexplode
00011aca 117c00000024	move.b	#0,obRoutine(a0)
00011ad0 4e75	rts	
00011ad2 3038d008	move.w	(v_player+obX).w,d0
00011ad6 90680008	sub.w	obX(a0),d0
00011ada 6402	bcc.s	.isleft
00011adc 4440	neg.w	d0
00011ade 0c400060	cmpi.w	#$60,d0
00011ae2 647a	bhs.s	.outofrange
00011ae4 3038d00c	move.w	(v_player+obY).w,d0
00011ae8 9068000c	sub.w	obY(a0),d0
00011aec 6402	bcc.s	.isabove
00011aee 4440	neg.w	d0
00011af0 0c400060	cmpi.w	#$60,d0
00011af4 6468	bhs.s	.outofrange
00011af6 4a78fe08	tst.w	(v_debuguse).w
00011afa 6662	bne.s	.outofrange
00011afc 117c00040025	move.b	#4,ob2ndRout(a0)
00011b02 317c008f0030	move.w	#143,bom_time(a0)
00011b08 42680010	clr.w	obVelX(a0)
00011b0c 117c0002001c	move.b	#2,obAnim(a0)
00011b12 6100bf8e	bsr.w	FindNextFreeObj
00011b16 6646	bne.s	.outofrange
00011b1e 336800080008	move.w	obX(a0),obX(a1)
00011b24 3368000c000c	move.w	obY(a0),obY(a1)
00011b2a 3368000c0034	move.w	obY(a0),bom_origY(a1)
00011b30 136800220022	move.b	obStatus(a0),obStatus(a1)
00011b36 137c00040028	move.b	#4,obSubtype(a1)
00011b3c 137c0003001c	move.b	#3,obAnim(a1)
00011b42 337c00100012	move.w	#$10,obVelY(a1)
00011b48 082800010022	btst	#1,obStatus(a0)
00011b4e 6704	beq.s	.normal
00011b50 44690012	neg.w	obVelY(a1)
00011b54 337c008f0030	move.w	#143,bom_time(a1)
00011b5a 2348003c	move.l	a0,bom_parent(a1)
00011b5e 4e75	rts	
00011b60 610e	bsr.s	loc_11B70
00011b62 43f900011c08	lea	(Ani_Bomb).l,a1
00011b68 61008bae	bsr.w	AnimateSprite
00011b6c 6000db3e	bra.w	RememberState
00011b70 53680030	subq.w	#1,bom_time(a0)
00011b74 6b06	bmi.s	loc_11B7C
00011b76 6100ba66	bsr.w	SpeedToPos
00011b7a 4e75	rts	
00011b7c 42680030	clr.w	bom_time(a0)
00011b80 42280024	clr.b	obRoutine(a0)
00011b84 31680034000c	move.w	bom_origY(a0),obY(a0)
00011b8a 7203	moveq	#3,d1
00011b8c 2248	movea.l	a0,a1
00011b8e 45f900011bf8	lea	(Bom_ShrSpeed).l,a2
00011b94 6006	bra.s	.makeshrapnel
00011b96 6100bf0a	bsr.w	FindNextFreeObj
00011b9a 6632	bne.s	.fail
00011ba2 336800080008	move.w	obX(a0),obX(a1)
00011ba8 3368000c000c	move.w	obY(a0),obY(a1)
00011bae 137c00060028	move.b	#6,obSubtype(a1)
00011bb4 137c0004001c	move.b	#4,obAnim(a1)
00011bba 335a0010	move.w	(a2)+,obVelX(a1)
00011bbe 335a0012	move.w	(a2)+,obVelY(a1)
00011bc2 137c00980020	move.b	#$98,obColType(a1)
00011bc8 08e900070001	bset	#7,obRender(a1)
00011bce 51c9ffc6	dbf	d1,.loop
00011bd2 117c00060024	move.b	#6,obRoutine(a0)
00011bd8 6100ba04	bsr.w	SpeedToPos
00011bdc 066800180012	addi.w	#$18,obVelY(a0)
00011be2 43f900011c08	lea	(Ani_Bomb).l,a1
00011be8 61008b2e	bsr.w	AnimateSprite
00011bec 4a280001	tst.b	obRender(a0)
00011bf0 6a00ba4e	bpl.w	DeleteObject
00011bf4 6000ba0e	bra.w	DisplaySprite
00011cce 7000	moveq	#0,d0
00011cd0 10280024	move.b	obRoutine(a0),d0
00011cd4 323b0006	move.w	Orb_Index(pc,d0.w),d1
00011cd8 4efb1002	jmp	Orb_Index(pc,d1.w)
00011ce6 217c00011ee40004	move.l	#Map_Orb,obMap(a0)
00011cee 317c04290002	move.w	#ArtTile_SBZ_Orbinaut,obGfx(a0)
00011cf4 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
00011cfa 6706	beq.s	.isscrap
00011cfc 317c24290002	move.w	#ArtTile_SLZ_Orbinaut|Tile_Pal2,obGfx(a0)
00011d02 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00011d08 6606	bne.s	.notlabyrinth
00011d0a 317c04670002	move.w	#ArtTile_LZ_Orbinaut,obGfx(a0)
00011d10 002800040001	ori.b	#4,obRender(a0)
00011d16 117c00040018	move.b	#4,obPriority(a0)
00011d1c 117c000b0020	move.b	#$B,obColType(a0)
00011d22 117c000c0019	move.b	#$C,obActWid(a0)
00011d28 7400	moveq	#0,d2
00011d2a 45e80037	lea	objoff_37(a0),a2
00011d2e 264a	movea.l	a2,a3
00011d30 524a	addq.w	#1,a2
00011d32 7203	moveq	#3,d1
00011d34 6100bd6c	bsr.w	FindNextFreeObj
00011d38 6656	bne.s	.fail
00011d3a 5213	addq.b	#1,(a3)
00011d3c 3a09	move.w	a1,d5
00011d3e 0445d000	subi.w	#v_objspace&$FFFF,d5
00011d42 ec4d	lsr.w	#object_size_bits,d5
00011d44 0245007f	andi.w	#$7F,d5
00011d48 14c5	move.b	d5,(a2)+
00011d50 137c00060024	move.b	#6,obRoutine(a1)
00011d56 236800040004	move.l	obMap(a0),obMap(a1)
00011d5c 336800020002	move.w	obGfx(a0),obGfx(a1)
00011d62 002900040001	ori.b	#4,obRender(a1)
00011d68 137c00040018	move.b	#4,obPriority(a1)
00011d6e 137c00080019	move.b	#8,obActWid(a1)
00011d74 137c0003001a	move.b	#3,obFrame(a1)
00011d7a 137c00980020	move.b	#$98,obColType(a1)
00011d80 13420026	move.b	d2,obAngle(a1)
00011d84 06020040	addi.b	#$40,d2
00011d88 2348003c	move.l	a0,orb_parent(a1)
00011d8c 51c9ffa6	dbf	d1,.makesatellites
00011d90 7001	moveq	#1,d0
00011d92 082800000022	btst	#0,obStatus(a0)
00011d98 6702	beq.s	.noflip
00011d9a 4440	neg.w	d0
00011d9c 11400036	move.b	d0,objoff_36(a0)
00011da0 116800280024	move.b	obSubtype(a0),obRoutine(a0)
00011da6 54280024	addq.b	#2,obRoutine(a0)
00011daa 317cffc00010	move.w	#-$40,obVelX(a0)
00011db0 082800000022	btst	#0,obStatus(a0)
00011db6 6704	beq.s	.noflip2
00011db8 44680010	neg.w	obVelX(a0)
00011dbc 4e75	rts	
00011dbe 3038d008	move.w	(v_player+obX).w,d0
00011dc2 90680008	sub.w	obX(a0),d0
00011dc6 6402	bcc.s	.isright
00011dc8 4440	neg.w	d0
00011dca 0c4000a0	cmpi.w	#$A0,d0
00011dce 641e	bhs.s	.animate
00011dd0 3038d00c	move.w	(v_player+obY).w,d0
00011dd4 9068000c	sub.w	obY(a0),d0
00011dd8 6402	bcc.s	.isabove
00011dda 4440	neg.w	d0
00011ddc 0c400050	cmpi.w	#$50,d0
00011de0 640c	bhs.s	.animate
00011de2 4a78fe08	tst.w	(v_debuguse).w
00011de6 6606	bne.s	.animate
00011de8 117c0001001c	move.b	#1,obAnim(a0)
00011dee 43f900011ed6	lea	(Ani_Orb).l,a1
00011df4 61008922	bsr.w	AnimateSprite
00011df8 60000006	bra.w	Orb_ChkDel
00011dfc 6100b7e0	bsr.w	SpeedToPos
00011e00 30280008	move.w	obX(a0),d0
00011e04 0240ff80	andi.w	#$FF80,d0
00011e08 3238f700	move.w	(v_screenposx).w,d1
00011e0c 04410080	subi.w	#128,d1
00011e10 0241ff80	andi.w	#$FF80,d1
00011e14 9041	sub.w	d1,d0
00011e16 0c400280	cmpi.w	#128+320+192,d0
00011e1a 62000006	bhi.w	.chkgone
00011e1e 6000b7e4	bra.w	DisplaySprite
00011e22 45f8fc00	lea	(v_objstate).w,a2
00011e26 7000	moveq	#0,d0
00011e28 10280023	move.b	obRespawnNo(a0),d0
00011e2c 6706	beq.s	loc_11E34
00011e2e 08b200070002	bclr	#7,2(a2,d0.w)
00011e34 45e80037	lea	objoff_37(a0),a2
00011e38 7400	moveq	#0,d2
00011e3a 141a	move.b	(a2)+,d2
00011e3c 5342	subq.w	#1,d2
00011e3e 6516	bcs.s	Orb_Delete
00011e40 7000	moveq	#0,d0
00011e42 101a	move.b	(a2)+,d0
00011e44 ed48	lsl.w	#object_size_bits,d0
00011e46 068000ffd000	addi.l	#v_objspace&$FFFFFF,d0
00011e4c 2240	movea.l	d0,a1
00011e4e 6100b7f2	bsr.w	DeleteChild
00011e52 51caffec	dbf	d2,loc_11E40
00011e56 6000b7e8	bra.w	DeleteObject
00011e5a 2268003c	movea.l	orb_parent(a0),a1
00011e64 6600b7da	bne.w	DeleteObject
00011e68 0c290002001a	cmpi.b	#2,obFrame(a1)
00011e6e 662c	bne.s	.circle
00011e70 0c2800400026	cmpi.b	#$40,obAngle(a0)
00011e76 6624	bne.s	.circle
00011e78 54280024	addq.b	#2,obRoutine(a0)
00011e7c 53290037	subq.b	#1,objoff_37(a1)
00011e80 6604	bne.s	.fire
00011e82 54290024	addq.b	#2,obRoutine(a1)
00011e86 317cfe000010	move.w	#-$200,obVelX(a0)
00011e8c 082900000022	btst	#0,obStatus(a1)
00011e92 6704	beq.s	.noflip
00011e94 44680010	neg.w	obVelX(a0)
00011e98 6000b76a	bra.w	DisplaySprite
00011e9c 10280026	move.b	obAngle(a0),d0
00011ea0 4eb9000029da	jsr	(CalcSine).l
00011ea6 e841	asr.w	#4,d1
00011ea8 d2690008	add.w	obX(a1),d1
00011eac 31410008	move.w	d1,obX(a0)
00011eb0 e840	asr.w	#4,d0
00011eb2 d069000c	add.w	obY(a1),d0
00011eb6 3140000c	move.w	d0,obY(a0)
00011eba 10290036	move.b	objoff_36(a1),d0
00011ebe d1280026	add.b	d0,obAngle(a0)
00011ec2 6000b740	bra.w	DisplaySprite
00011ec6 6100b716	bsr.w	SpeedToPos
00011eca 4a280001	tst.b	obRender(a0)
00011ece 6a00b770	bpl.w	DeleteObject
00011ed2 6000b730	bra.w	DisplaySprite
00011f04 7000	moveq	#0,d0
00011f06 10280024	move.b	obRoutine(a0),d0
00011f0a 323b0006	move.w	Harp_Index(pc,d0.w),d1
00011f0e 4efb1002	jmp	Harp_Index(pc,d1.w)
00011f18 54280024	addq.b	#2,obRoutine(a0)
00011f1c 217c00011f9a0004	move.l	#Map_Harp,obMap(a0)
00011f24 317c03cc0002	move.w	#ArtTile_LZ_Harpoon,obGfx(a0)
00011f2a 002800040001	ori.b	#4,obRender(a0)
00011f30 117c00040018	move.b	#4,obPriority(a0)
00011f36 11680028001c	move.b	obSubtype(a0),obAnim(a0)
00011f3c 117c00140019	move.b	#$14,obActWid(a0)
00011f42 317c003c0030	move.w	#60,harp_time(a0)
00011f48 43f900011f82	lea	(Ani_Harp).l,a1
00011f4e 610087c8	bsr.w	AnimateSprite
00011f52 7000	moveq	#0,d0
00011f54 1028001a	move.b	obFrame(a0),d0
00011f58 117b00080020	move.b	.types(pc,d0.w),obColType(a0)
00011f5e 6000d74c	bra.w	RememberState
00011f68 53680030	subq.w	#1,harp_time(a0)
00011f6c 6a10	bpl.s	.chkdel
00011f6e 317c003c0030	move.w	#60,harp_time(a0)
00011f74 55280024	subq.b	#2,obRoutine(a0)
00011f78 08680000001c	bchg	#0,obAnim(a0)
00011f7e 6000d72c	bra.w	RememberState
00011fd4 7000	moveq	#0,d0
00011fd6 10280024	move.b	obRoutine(a0),d0
00011fda 323b0006	move.w	LBlk_Index(pc,d0.w),d1
00011fde 4efb1002	jmp	LBlk_Index(pc,d1.w)
00011fee 54280024	addq.b	#2,obRoutine(a0)
00011ff2 217c000121c20004	move.l	#Map_LBlock,obMap(a0)
00011ffa 317c43e60002	move.w	#ArtTile_LZ_Blocks|Tile_Pal3,obGfx(a0)
00012000 117c00040001	move.b	#4,obRender(a0)
00012006 117c00030018	move.b	#3,obPriority(a0)
0001200c 7000	moveq	#0,d0
0001200e 10280028	move.b	obSubtype(a0),d0
00012012 e648	lsr.w	#3,d0
00012014 0240000e	andi.w	#$E,d0
00012018 45fb00cc	lea	LBlk_Var(pc,d0.w),a2
0001201c 115a0019	move.b	(a2)+,obActWid(a0)
00012020 11520016	move.b	(a2),obHeight(a0)
00012024 e248	lsr.w	#1,d0
00012026 1140001a	move.b	d0,obFrame(a0)
0001202a 316800080034	move.w	obX(a0),lblk_origX(a0)
00012030 3168000c0030	move.w	obY(a0),lblk_origY(a0)
00012036 10280028	move.b	obSubtype(a0),d0
0001203a 0200000f	andi.b	#$F,d0
0001203e 670c	beq.s	LBlk_Action
00012040 0c000007	cmpi.b	#7,d0
00012044 6706	beq.s	LBlk_Action
00012046 117c00010038	move.b	#1,lblk_untouched(a0)
0001204c 3f280008	move.w	obX(a0),-(sp)
00012050 7000	moveq	#0,d0
00012052 10280028	move.b	obSubtype(a0),d0
00012056 0240000f	andi.w	#$F,d0
0001205a d040	add.w	d0,d0
0001205c 323b0050	move.w	.index(pc,d0.w),d1
00012060 4ebb104c	jsr	.index(pc,d1.w)
00012064 381f	move.w	(sp)+,d4
00012066 4a280001	tst.b	obRender(a0)
0001206a 6a20	bpl.s	.chkdel
0001206c 7200	moveq	#0,d1
0001206e 12280019	move.b	obActWid(a0),d1
00012072 0641000b	addi.w	#$B,d1
00012076 7400	moveq	#0,d2
00012078 14280016	move.b	obHeight(a0),d2
0001207c 3602	move.w	d2,d3
0001207e 5243	addq.w	#1,d3
00012080 6100d954	bsr.w	SolidObject
00012084 1144003f	move.b	d4,objoff_3F(a0)
00012088 610000f6	bsr.w	loc_12180
0001208c 30280034	move.w	lblk_origX(a0),d0
00012090 0240ff80	andi.w	#$FF80,d0
00012094 3238f700	move.w	(v_screenposx).w,d1
00012098 04410080	subi.w	#128,d1
0001209c 0241ff80	andi.w	#$FF80,d1
000120a0 9041	sub.w	d1,d0
000120a2 0c400280	cmpi.w	#128+320+192,d0
000120a6 6200b598	bhi.w	DeleteObject
000120aa 6000b558	bra.w	DisplaySprite
000120be 4e75	rts	
000120c0 4a680036	tst.w	lblk_time(a0)
000120c4 6610	bne.s	.wait01
000120c6 082800030022	btst	#3,obStatus(a0)
000120cc 6706	beq.s	.donothing01
000120ce 317c001e0036	move.w	#30,lblk_time(a0)
000120d4 4e75	rts	
000120d6 53680036	subq.w	#1,lblk_time(a0)
000120da 66f8	bne.s	.donothing01
000120dc 52280028	addq.b	#1,obSubtype(a0)
000120e0 42280038	clr.b	lblk_untouched(a0)
000120e4 4e75	rts	
000120e6 6100b4f6	bsr.w	SpeedToPos
000120ea 50680012	addq.w	#8,obVelY(a0)
000120ee 61002d28	bsr.w	ObjFloorDist
000120f2 4a41	tst.w	d1
000120f4 6a000010	bpl.w	.nofloor02
000120f8 5241	addq.w	#1,d1
000120fa d368000c	add.w	d1,obY(a0)
000120fe 42680012	clr.w	obVelY(a0)
00012102 42280028	clr.b	obSubtype(a0)
00012106 4e75	rts	
00012108 6100b4d4	bsr.w	SpeedToPos
0001210c 51680012	subq.w	#8,obVelY(a0)
00012110 61002e8c	bsr.w	ObjHitCeiling
00012114 4a41	tst.w	d1
00012116 6a00000e	bpl.w	.noceiling04
0001211a 9368000c	sub.w	d1,obY(a0)
0001211e 42680012	clr.w	obVelY(a0)
00012122 42280028	clr.b	obSubtype(a0)
00012126 4e75	rts	
00012128 0c280001003f	cmpi.b	#1,objoff_3F(a0)
0001212e 6608	bne.s	.notouch05
00012130 52280028	addq.b	#1,obSubtype(a0)
00012134 42280038	clr.b	lblk_untouched(a0)
00012138 4e75	rts	
0001213a 3038f646	move.w	(v_waterpos1).w,d0
0001213e 9068000c	sub.w	obY(a0),d0
00012142 673a	beq.s	.stop07
00012144 641c	bcc.s	.fall07
00012146 0c40fffe	cmpi.w	#-2,d0
0001214a 6c02	bge.s	.loc_1214E
0001214c 70fe	moveq	#-2,d0
0001214e d168000c	add.w	d0,obY(a0)
00012152 61002e4a	bsr.w	ObjHitCeiling
00012156 4a41	tst.w	d1
00012158 6a000006	bpl.w	.noceiling07
0001215c 9368000c	sub.w	d1,obY(a0)
00012160 4e75	rts	
00012162 0c400002	cmpi.w	#2,d0
00012166 6f02	ble.s	.loc_1216A
00012168 7002	moveq	#2,d0
0001216a d168000c	add.w	d0,obY(a0)
0001216e 61002ca8	bsr.w	ObjFloorDist
00012172 4a41	tst.w	d1
00012174 6a000008	bpl.w	.stop07
00012178 5241	addq.w	#1,d1
0001217a d368000c	add.w	d1,obY(a0)
0001217e 4e75	rts	
00012180 4a280038	tst.b	lblk_untouched(a0)
00012184 673a	beq.s	locret_121C0
00012186 082800030022	btst	#3,obStatus(a0)
0001218c 660c	bne.s	loc_1219A
0001218e 4a28003e	tst.b	objoff_3E(a0)
00012192 672c	beq.s	locret_121C0
00012194 5928003e	subq.b	#4,objoff_3E(a0)
00012198 600c	bra.s	loc_121A6
0001219a 0c280040003e	cmpi.b	#$40,objoff_3E(a0)
000121a0 671e	beq.s	locret_121C0
000121a2 5828003e	addq.b	#4,objoff_3E(a0)
000121a6 1028003e	move.b	objoff_3E(a0),d0
000121aa 4eb9000029da	jsr	(CalcSine).l
000121b0 323c0400	move.w	#$400,d1
000121b4 c1c1	muls.w	d1,d0
000121b6 4840	swap	d0
000121b8 d0680030	add.w	lblk_origY(a0),d0
000121bc 3140000c	move.w	d0,obY(a0)
000121c0 4e75	rts	
000121e8 7000	moveq	#0,d0
000121ea 10280024	move.b	obRoutine(a0),d0
000121ee 323b000a	move.w	Gar_Index(pc,d0.w),d1
000121f2 4ebb1006	jsr	Gar_Index(pc,d1.w)
000121f6 6000d4b4	bra.w	RememberState
0001220a 54280024	addq.b	#2,obRoutine(a0)
0001220e 217c000123180004	move.l	#Map_Gar,obMap(a0)
00012216 317c42e90002	move.w	#ArtTile_LZ_Gargoyle|Tile_Pal3,obGfx(a0)
0001221c 002800040001	ori.b	#4,obRender(a0)
00012222 117c00030018	move.b	#3,obPriority(a0)
00012228 117c00100019	move.b	#$10,obActWid(a0)
0001222e 10280028	move.b	obSubtype(a0),d0
00012232 0240000f	andi.w	#$F,d0
00012236 117b00ca001f	move.b	Gar_SpitRate(pc,d0.w),obDelayAni(a0)
0001223c 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
00012242 0228000f0028	andi.b	#$F,obSubtype(a0)
00012248 5328001e	subq.b	#1,obTimeFrame(a0)
0001224c 6634	bne.s	.nofire
0001224e 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
00012254 6100b628	bsr.w	ChkObjectVisible
00012258 6628	bne.s	.nofire
0001225a 6100b830	bsr.w	FindFreeObj
0001225e 6622	bne.s	.nofire
00012266 58290024	addq.b	#4,obRoutine(a1)
0001226a 336800080008	move.w	obX(a0),obX(a1)
00012270 3368000c000c	move.w	obY(a0),obY(a1)
00012276 136800010001	move.b	obRender(a0),obRender(a1)
0001227c 136800220022	move.b	obStatus(a0),obStatus(a1)
00012282 4e75	rts	
00012284 54280024	addq.b	#2,obRoutine(a0)
00012288 117c00080016	move.b	#8,obHeight(a0)
0001228e 117c00080017	move.b	#8,obWidth(a0)
00012294 217c000123180004	move.l	#Map_Gar,obMap(a0)
0001229c 317c02e90002	move.w	#ArtTile_LZ_Gargoyle,obGfx(a0)
000122a2 002800040001	ori.b	#4,obRender(a0)
000122a8 117c00040018	move.b	#4,obPriority(a0)
000122ae 117c00980020	move.b	#$98,obColType(a0)
000122b4 117c00080019	move.b	#8,obActWid(a0)
000122ba 117c0002001a	move.b	#2,obFrame(a0)
000122c0 5068000c	addq.w	#8,obY(a0)
000122c4 317c02000010	move.w	#$200,obVelX(a0)
000122ca 082800000022	btst	#0,obStatus(a0)
000122d0 6604	bne.s	.noflip
000122d2 44680010	neg.w	obVelX(a0)
000122d6 303c00ae	move.w	#sfx_Fireball,d0
000122da 4eb90000139c	jsr	(QueueSound2).l
000122e0 1038fe05	move.b	(v_framebyte).w,d0
000122e4 02000007	andi.b	#7,d0
000122e8 6606	bne.s	.nochg
000122ea 08680000001a	bchg	#0,obFrame(a0)
000122f0 6100b2ec	bsr.w	SpeedToPos
000122f4 082800000022	btst	#0,obStatus(a0)
000122fa 660e	bne.s	.isright
000122fc 76f8	moveq	#-8,d3
000122fe 61002d6c	bsr.w	ObjHitWallLeft
00012302 4a41	tst.w	d1
00012304 6b00b33a	bmi.w	DeleteObject
00012308 4e75	rts	
0001230a 7608	moveq	#8,d3
0001230c 61002bcc	bsr.w	ObjHitWallRight
00012310 4a41	tst.w	d1
00012312 6b00b32c	bmi.w	DeleteObject
00012316 4e75	rts	
0001233c 7000	moveq	#0,d0
0001233e 10280024	move.b	obRoutine(a0),d0
00012342 323b004e	move.w	LCon_Index(pc,d0.w),d1
00012346 4ebb104a	jsr	LCon_Index(pc,d1.w)
0001234a 30280030	move.w	objoff_30(a0),d0
0001234e 0240ff80	andi.w	#$FF80,d0
00012352 3238f700	move.w	(v_screenposx).w,d1
00012356 04410080	subi.w	#128,d1
0001235a 0241ff80	andi.w	#$FF80,d1
0001235e 9041	sub.w	d1,d0
00012360 0c400280	cmpi.w	#128+320+192,d0
00012364 6204	bhi.s	loc_1236A
00012366 6000b29c	bra.w	DisplaySprite
0001236a 0c380002fe11	cmpi.b	#act3,(v_act).w
00012370 6606	bne.s	loc_12378
00012372 0c40ff80	cmpi.w	#-$80,d0
00012376 64ee	bhs.s	LCon_Display
00012378 1028002f	move.b	objoff_2F(a0),d0
0001237c 6a00b2c2	bpl.w	DeleteObject
00012380 0240007f	andi.w	#$7F,d0
00012384 45f8f7c1	lea	(v_obj63).w,a2
00012388 08b200000000	bclr	#0,(a2,d0.w)
0001238e 6000b2b0	bra.w	DeleteObject
0001239a 10280028	move.b	obSubtype(a0),d0
0001239e 6b0000c0	bmi.w	loc_12460
000123a2 54280024	addq.b	#2,obRoutine(a0)
000123a6 217c0001267c0004	move.l	#Map_LConv,obMap(a0)
000123ae 317c43f60002	move.w	#ArtTile_LZ_Conveyor_Belt|Tile_Pal3,obGfx(a0)
000123b4 002800040001	ori.b	#4,obRender(a0)
000123ba 117c00100019	move.b	#$10,obActWid(a0)
000123c0 117c00040018	move.b	#4,obPriority(a0)
000123c6 0c28007f0028	cmpi.b	#$7F,obSubtype(a0)
000123cc 6614	bne.s	loc_123E2
000123ce 58280024	addq.b	#4,obRoutine(a0)
000123d2 317c03f60002	move.w	#ArtTile_LZ_Conveyor_Belt,obGfx(a0)
000123d8 117c00010018	move.b	#1,obPriority(a0)
000123de 600000fe	bra.w	LCon_Wheel
000123e2 117c0004001a	move.b	#4,obFrame(a0)
000123e8 7000	moveq	#0,d0
000123ea 10280028	move.b	obSubtype(a0),d0
000123ee 3200	move.w	d0,d1
000123f0 e648	lsr.w	#3,d0
000123f2 0240001e	andi.w	#$1E,d0
000123f6 45fa01f0	lea	LCon_Data(pc),a2
000123fa d4f20000	adda.w	(a2,d0.w),a2
000123fe 315a0038	move.w	(a2)+,objoff_38(a0)
00012402 315a0030	move.w	(a2)+,objoff_30(a0)
00012406 214a003c	move.l	a2,objoff_3C(a0)
0001240a 0241000f	andi.w	#$F,d1
0001240e e549	lsl.w	#2,d1
00012410 11410038	move.b	d1,objoff_38(a0)
00012414 117c0004003a	move.b	#4,objoff_3A(a0)
0001241a 4a38f7c0	tst.b	(f_conveyrev).w
0001241e 672c	beq.s	loc_1244C
00012420 117c0001003b	move.b	#1,objoff_3B(a0)
00012426 4428003a	neg.b	objoff_3A(a0)
0001242a 7200	moveq	#0,d1
0001242c 12280038	move.b	objoff_38(a0),d1
00012430 d228003a	add.b	objoff_3A(a0),d1
00012434 b2280039	cmp.b	objoff_39(a0),d1
00012438 650e	blo.s	loc_12448
0001243a 1001	move.b	d1,d0
0001243c 7200	moveq	#0,d1
0001243e 4a00	tst.b	d0
00012440 6a06	bpl.s	loc_12448
00012442 12280039	move.b	objoff_39(a0),d1
00012446 5901	subq.b	#4,d1
00012448 11410038	move.b	d1,objoff_38(a0)
0001244c 317210000034	move.w	(a2,d1.w),objoff_34(a0)
00012452 317210020036	move.w	2(a2,d1.w),objoff_36(a0)
00012458 61000116	bsr.w	LCon_ChangeDir
0001245c 60000054	bra.w	LCon_Platform
00012460 1140002f	move.b	d0,objoff_2F(a0)
00012464 0240007f	andi.w	#$7F,d0
00012468 45f8f7c1	lea	(v_obj63).w,a2
0001246c 08f200000000	bset	#0,(a2,d0.w)
00012472 6600b1cc	bne.w	DeleteObject
00012476 d040	add.w	d0,d0
00012478 0240001e	andi.w	#$1E,d0
0001247c 06400070	addi.w	#ObjPosLZPlatform_Index-ObjPos_Index,d0
00012480 45f90006b000	lea	(ObjPos_Index).l,a2
00012486 d4f20000	adda.w	(a2,d0.w),a2
0001248a 321a	move.w	(a2)+,d1
0001248c 2248	movea.l	a0,a1
0001248e 6006	bra.s	LCon_MakePtfms
00012490 6100b5fa	bsr.w	FindFreeObj
00012494 6614	bne.s	loc_124AA
0001249c 335a0008	move.w	(a2)+,obX(a1)
000124a0 335a000c	move.w	(a2)+,obY(a1)
000124a4 301a	move.w	(a2)+,d0
000124a6 13400028	move.b	d0,obSubtype(a1)
000124aa 51c9ffe4	dbf	d1,LCon_Loop
000124ae 588f	addq.l	#4,sp
000124b0 4e75	rts	
000124b2 7200	moveq	#0,d1
000124b4 12280019	move.b	obActWid(a0),d1
000124b8 4eb90000744c	jsr	(PlatformObject).l
000124be 60000042	bra.w	sub_12502
000124c2 7200	moveq	#0,d1
000124c4 12280019	move.b	obActWid(a0),d1
000124c8 4eb9000075c0	jsr	(ExitPlatform).l
000124ce 3f280008	move.w	obX(a0),-(sp)
000124d2 6100002e	bsr.w	sub_12502
000124d6 341f	move.w	(sp)+,d2
000124d8 4ef900007b2e	jmp	(MvSonicOnPtfm2).l
000124de 3038fe04	move.w	(v_framecount).w,d0
000124e2 02400003	andi.w	#3,d0
000124e6 6614	bne.s	loc_124FC
000124e8 7201	moveq	#1,d1
000124ea 4a38f7c0	tst.b	(f_conveyrev).w
000124ee 6702	beq.s	loc_124F2
000124f0 4401	neg.b	d1
000124f2 d328001a	add.b	d1,obFrame(a0)
000124f6 02280003001a	andi.b	#3,obFrame(a0)
000124fc 588f	addq.l	#4,sp
000124fe 6000d1ac	bra.w	RememberState
00012502 4a38f7ee	tst.b	(f_switch+$E).w
00012506 6718	beq.s	loc_12520
00012508 4a28003b	tst.b	objoff_3B(a0)
0001250c 6612	bne.s	loc_12520
0001250e 117c0001003b	move.b	#1,objoff_3B(a0)
00012514 11fc0001f7c0	move.b	#1,(f_conveyrev).w
0001251a 4428003a	neg.b	objoff_3A(a0)
0001251e 6014	bra.s	loc_12534
00012520 30280008	move.w	obX(a0),d0
00012524 b0680034	cmp.w	objoff_34(a0),d0
00012528 6640	bne.s	loc_1256A
0001252a 3028000c	move.w	obY(a0),d0
0001252e b0680036	cmp.w	objoff_36(a0),d0
00012532 6636	bne.s	loc_1256A
00012534 7200	moveq	#0,d1
00012536 12280038	move.b	objoff_38(a0),d1
0001253a d228003a	add.b	objoff_3A(a0),d1
0001253e b2280039	cmp.b	objoff_39(a0),d1
00012542 650e	blo.s	loc_12552
00012544 1001	move.b	d1,d0
00012546 7200	moveq	#0,d1
00012548 4a00	tst.b	d0
0001254a 6a06	bpl.s	loc_12552
0001254c 12280039	move.b	objoff_39(a0),d1
00012550 5901	subq.b	#4,d1
00012552 11410038	move.b	d1,objoff_38(a0)
00012556 2268003c	movea.l	objoff_3C(a0),a1
0001255a 317110000034	move.w	(a1,d1.w),objoff_34(a0)
00012560 317110020036	move.w	2(a1,d1.w),objoff_36(a0)
00012566 61000008	bsr.w	LCon_ChangeDir
0001256a 6100b072	bsr.w	SpeedToPos
0001256e 4e75	rts	
00012570 7000	moveq	#0,d0
00012572 343cff00	move.w	#-$100,d2
00012576 30280008	move.w	obX(a0),d0
0001257a 90680034	sub.w	objoff_34(a0),d0
0001257e 6404	bcc.s	loc_12584
00012580 4440	neg.w	d0
00012582 4442	neg.w	d2
00012584 7200	moveq	#0,d1
00012586 363cff00	move.w	#-$100,d3
0001258a 3228000c	move.w	obY(a0),d1
0001258e 92680036	sub.w	objoff_36(a0),d1
00012592 6404	bcc.s	loc_12598
00012594 4441	neg.w	d1
00012596 4443	neg.w	d3
00012598 b240	cmp.w	d0,d1
0001259a 6526	blo.s	loc_125C2
0001259c 30280008	move.w	obX(a0),d0
000125a0 90680034	sub.w	objoff_34(a0),d0
000125a4 6708	beq.s	loc_125AE
000125a6 48c0	ext.l	d0
000125a8 e180	asl.l	#8,d0
000125aa 81c1	divs.w	d1,d0
000125ac 4440	neg.w	d0
000125ae 31400010	move.w	d0,obVelX(a0)
000125b2 31430012	move.w	d3,obVelY(a0)
000125b6 4840	swap	d0
000125b8 3140000a	move.w	d0,obX+2(a0)
000125bc 4268000e	clr.w	obY+2(a0)
000125c0 4e75	rts	
000125c2 3228000c	move.w	obY(a0),d1
000125c6 92680036	sub.w	objoff_36(a0),d1
000125ca 6708	beq.s	loc_125D4
000125cc 48c1	ext.l	d1
000125ce e181	asl.l	#8,d1
000125d0 83c0	divs.w	d0,d1
000125d2 4441	neg.w	d1
000125d4 31410012	move.w	d1,obVelY(a0)
000125d8 31420010	move.w	d2,obVelX(a0)
000125dc 4841	swap	d1
000125de 3141000e	move.w	d1,obY+2(a0)
000125e2 4268000a	clr.w	obX+2(a0)
000125e6 4e75	rts	
000126a4 7000	moveq	#0,d0
000126a6 10280024	move.b	obRoutine(a0),d0
000126aa 323b0006	move.w	Bub_Index(pc,d0.w),d1
000126ae 4efb1002	jmp	Bub_Index(pc,d1.w)
000126be 54280024	addq.b	#2,obRoutine(a0)
000126c2 217c000129cc0004	move.l	#Map_Bub,obMap(a0)
000126ca 317c83480002	move.w	#ArtTile_LZ_Bubbles|Tile_Prio,obGfx(a0)
000126d0 117c00840001	move.b	#$84,obRender(a0)
000126d6 117c00100019	move.b	#$10,obActWid(a0)
000126dc 117c00010018	move.b	#1,obPriority(a0)
000126e2 10280028	move.b	obSubtype(a0),d0
000126e6 6a1a	bpl.s	.bubble
000126e8 50280024	addq.b	#8,obRoutine(a0)
000126ec 0240007f	andi.w	#$7F,d0
000126f0 11400032	move.b	d0,bub_time(a0)
000126f4 11400033	move.b	d0,bub_freq(a0)
000126f8 117c0006001c	move.b	#6,obAnim(a0)
000126fe 60000112	bra.w	Bub_BblMaker
00012702 1140001c	move.b	d0,obAnim(a0)
00012706 316800080030	move.w	obX(a0),bub_origX(a0)
0001270c 317cff780012	move.w	#-$88,obVelY(a0)
00012712 4eb9000029b4	jsr	(RandomNumber).l
00012718 11400026	move.b	d0,obAngle(a0)
0001271c 43f90001299c	lea	(Ani_Bub).l,a1
00012722 4eb90000a718	jsr	(AnimateSprite).l
00012728 0c280006001a	cmpi.b	#6,obFrame(a0)
0001272e 6606	bne.s	Bub_ChkWater
00012730 117c0001002e	move.b	#1,bub_inhalable(a0)
00012736 3038f646	move.w	(v_waterpos1).w,d0
0001273a b068000c	cmp.w	obY(a0),d0
0001273e 650e	blo.s	.wobble
00012740 117c00060024	move.b	#6,obRoutine(a0)
00012746 5628001c	addq.b	#3,obAnim(a0)
0001274a 600000a4	bra.w	Bub_Display
0001274e 10280026	move.b	obAngle(a0),d0
00012752 52280026	addq.b	#1,obAngle(a0)
00012756 0240007f	andi.w	#$7F,d0
0001275a 43f900013e1c	lea	(Drown_WobbleData).l,a1
00012760 10310000	move.b	(a1,d0.w),d0
00012764 4880	ext.w	d0
00012766 d0680030	add.w	bub_origX(a0),d0
0001276a 31400008	move.w	d0,obX(a0)
0001276e 4a28002e	tst.b	bub_inhalable(a0)
00012772 6766	beq.s	.display
00012774 610001e8	bsr.w	Bub_ChkSonic
00012778 6760	beq.s	.display
0001277a 61001912	bsr.w	ResumeMusic
0001277e 303c00ad	move.w	#sfx_Bubble,d0
00012782 4eb90000139c	jsr	(QueueSound2).l
00012788 43f8d000	lea	(v_player).w,a1
0001278c 42690010	clr.w	obVelX(a1)
00012790 42690012	clr.w	obVelY(a1)
00012794 42690014	clr.w	obInertia(a1)
00012798 137c0015001c	move.b	#id_GetAir,obAnim(a1)
0001279e 337c0023003e	move.w	#35,locktime(a1)
000127a4 137c0000003c	move.b	#0,jumping(a1)
000127aa 08a900050022	bclr	#5,obStatus(a1)
000127b0 08a900040022	bclr	#4,obStatus(a1)
000127b6 082900020022	btst	#2,obStatus(a1)
000127bc 6700ff82	beq.w	.burst
000127c0 08a900020022	bclr	#2,obStatus(a1)
000127c6 137c00130016	move.b	#$13,obHeight(a1)
000127cc 137c00090017	move.b	#9,obWidth(a1)
000127d2 5b69000c	subq.w	#5,obY(a1)
000127d6 6000ff68	bra.w	.burst
000127da 6100ae02	bsr.w	SpeedToPos
000127de 4a280001	tst.b	obRender(a0)
000127e2 6a06	bpl.s	.delete
000127e4 4ef90000d604	jmp	(DisplaySprite).l
000127ea 4ef90000d640	jmp	(DeleteObject).l
000127f0 43f90001299c	lea	(Ani_Bub).l,a1
000127f6 4eb90000a718	jsr	(AnimateSprite).l
000127fc 4a280001	tst.b	obRender(a0)
00012800 6a06	bpl.s	.delete
00012802 4ef90000d604	jmp	(DisplaySprite).l
00012808 4ef90000d640	jmp	(DeleteObject).l
0001280e 6000ae30	bra.w	DeleteObject
00012812 4a680036	tst.w	objoff_36(a0)
00012816 665c	bne.s	.loc_12874
00012818 3038f646	move.w	(v_waterpos1).w,d0
0001281c b068000c	cmp.w	obY(a0),d0
00012820 640000fe	bhs.w	.chkdel
00012824 4a280001	tst.b	obRender(a0)
00012828 6a0000f6	bpl.w	.chkdel
0001282c 53680038	subq.w	#1,objoff_38(a0)
00012830 6a0000e2	bpl.w	.loc_12914
00012834 317c00010036	move.w	#1,objoff_36(a0)
0001283a 4eb9000029b4	jsr	(RandomNumber).l
00012840 3200	move.w	d0,d1
00012842 02400007	andi.w	#7,d0
00012846 0c400006	cmpi.w	#6,d0
0001284a 64ee	bhs.s	.tryagain
0001284c 11400034	move.b	d0,objoff_34(a0)
00012850 0241000c	andi.w	#$C,d1
00012854 43f90001294c	lea	(Bub_BblTypes).l,a1
0001285a d2c1	adda.w	d1,a1
0001285c 2149003c	move.l	a1,objoff_3C(a0)
00012860 53280032	subq.b	#1,bub_time(a0)
00012864 6a0c	bpl.s	.loc_12872
00012866 116800330032	move.b	bub_freq(a0),bub_time(a0)
0001286c 08e800070036	bset	#7,objoff_36(a0)
00012872 6008	bra.s	.loc_1287C
00012874 53680038	subq.w	#1,objoff_38(a0)
00012878 6a00009a	bpl.w	.loc_12914
0001287c 4eb9000029b4	jsr	(RandomNumber).l
00012882 0240001f	andi.w	#$1F,d0
00012886 31400038	move.w	d0,objoff_38(a0)
0001288a 6100b200	bsr.w	FindFreeObj
0001288e 6668	bne.s	.fail
00012896 336800080008	move.w	obX(a0),obX(a1)
0001289c 4eb9000029b4	jsr	(RandomNumber).l
000128a2 0240000f	andi.w	#$F,d0
000128a6 5140	subq.w	#8,d0
000128a8 d1690008	add.w	d0,obX(a1)
000128ac 3368000c000c	move.w	obY(a0),obY(a1)
000128b2 7000	moveq	#0,d0
000128b4 10280034	move.b	objoff_34(a0),d0
000128b8 2468003c	movea.l	objoff_3C(a0),a2
000128bc 137200000028	move.b	(a2,d0.w),obSubtype(a1)
000128c2 082800070036	btst	#7,objoff_36(a0)
000128c8 672e	beq.s	.fail
000128ca 4eb9000029b4	jsr	(RandomNumber).l
000128d0 02400003	andi.w	#3,d0
000128d4 660e	bne.s	.loc_buh
000128d6 08e800060036	bset	#6,objoff_36(a0)
000128dc 661a	bne.s	.fail
000128de 137c00020028	move.b	#2,obSubtype(a1)
000128e4 4a280034	tst.b	objoff_34(a0)
000128e8 660e	bne.s	.fail
000128ea 08e800060036	bset	#6,objoff_36(a0)
000128f0 6606	bne.s	.fail
000128f2 137c00020028	move.b	#2,obSubtype(a1)
000128f8 53280034	subq.b	#1,objoff_34(a0)
000128fc 6a16	bpl.s	.loc_12914
000128fe 4eb9000029b4	jsr	(RandomNumber).l
00012904 0240007f	andi.w	#$7F,d0
00012908 06400080	addi.w	#$80,d0
0001290c d1680038	add.w	d0,objoff_38(a0)
00012910 42680036	clr.w	objoff_36(a0)
00012914 43f90001299c	lea	(Ani_Bub).l,a1
0001291a 4eb90000a718	jsr	(AnimateSprite).l
00012920 30280008	move.w	obX(a0),d0
00012924 0240ff80	andi.w	#$FF80,d0
00012928 3238f700	move.w	(v_screenposx).w,d1
0001292c 04410080	subi.w	#128,d1
00012930 0241ff80	andi.w	#$FF80,d1
00012934 9041	sub.w	d1,d0
00012936 0c400280	cmpi.w	#128+320+192,d0
0001293a 6200ad04	bhi.w	DeleteObject
0001293e 3038f646	move.w	(v_waterpos1).w,d0
00012942 b068000c	cmp.w	obY(a0),d0
00012946 6500acbc	blo.w	DisplaySprite
0001294a 4e75	rts	
0001295e 4a38f7c8	tst.b	(f_playerctrl).w
00012962 6b34	bmi.s	.loc_12998
00012964 43f8d000	lea	(v_player).w,a1
00012968 30290008	move.w	obX(a1),d0
0001296c 32280008	move.w	obX(a0),d1
00012970 04410010	subi.w	#$10,d1
00012974 b240	cmp.w	d0,d1
00012976 6420	bhs.s	.loc_12998
00012978 06410020	addi.w	#$20,d1
0001297c b240	cmp.w	d0,d1
0001297e 6518	blo.s	.loc_12998
00012980 3029000c	move.w	obY(a1),d0
00012984 3228000c	move.w	obY(a0),d1
00012988 b240	cmp.w	d0,d1
0001298a 640c	bhs.s	.loc_12998
0001298c 06410010	addi.w	#$10,d1
00012990 b240	cmp.w	d0,d1
00012992 6504	blo.s	.loc_12998
00012994 7001	moveq	#1,d0
00012996 4e75	rts	
00012998 7000	moveq	#0,d0
0001299a 4e75	rts	
00012a9e 7000	moveq	#0,d0
00012aa0 10280024	move.b	obRoutine(a0),d0
00012aa4 323b0006	move.w	WFall_Index(pc,d0.w),d1
00012aa8 4efb1002	jmp	WFall_Index(pc,d1.w)
00012ab6 58280024	addq.b	#4,obRoutine(a0)
00012aba 217c00012b540004	move.l	#Map_WFall,obMap(a0)
00012ac2 317c42590002	move.w	#ArtTile_LZ_Splash|Tile_Pal3,obGfx(a0)
00012ac8 002800040001	ori.b	#4,obRender(a0)
00012ace 117c00180019	move.b	#$18,obActWid(a0)
00012ad4 117c00010018	move.b	#1,obPriority(a0)
00012ada 10280028	move.b	obSubtype(a0),d0
00012ade 6a06	bpl.s	.under80
00012ae0 08e800070002	bset	#7,obGfx(a0)
00012ae6 0200000f	andi.b	#$F,d0
00012aea 1140001a	move.b	d0,obFrame(a0)
00012aee 0c000009	cmpi.b	#9,d0
00012af2 6630	bne.s	WFall_ChkDel
00012af4 42280018	clr.b	obPriority(a0)
00012af8 55280024	subq.b	#2,obRoutine(a0)
00012afc 082800060028	btst	#6,obSubtype(a0)
00012b02 6706	beq.s	.not49
00012b04 117c00060024	move.b	#6,obRoutine(a0)
00012b0a 082800050028	btst	#5,obSubtype(a0)
00012b10 6706	beq.s	WFall_Animate
00012b12 117c00080024	move.b	#8,obRoutine(a0)
00012b18 43f900012b4c	lea	(Ani_WFall).l,a1
00012b1e 4eb90000a718	jsr	(AnimateSprite).l
00012b24 6000cb86	bra.w	RememberState
00012b28 3038f646	move.w	(v_waterpos1).w,d0
00012b2c 04400010	subi.w	#$10,d0
00012b30 3140000c	move.w	d0,obY(a0)
00012b34 60e2	bra.s	WFall_Animate
00012b36 08a800070002	bclr	#7,obGfx(a0)
00012b3c 0c380007a506	cmpi.b	#7,(v_lvllayout_fg+((layout_row*2)+6)).w
00012b42 6606	bne.s	.animate
00012b44 08e800070002	bset	#7,obGfx(a0)
00012b4a 60cc	bra.s	WFall_Animate
00012bd8 4a78fe08	tst.w	(v_debuguse).w
00012bdc 6706	beq.s	Sonic_Normal
00012bde 4ef90001cf1a	jmp	(DebugMode).l
00012be4 7000	moveq	#0,d0
00012be6 10280024	move.b	obRoutine(a0),d0
00012bea 323b0006	move.w	Sonic_Index(pc,d0.w),d1
00012bee 4efb1002	jmp	Sonic_Index(pc,d1.w)
00012bfc 54280024	addq.b	#2,obRoutine(a0)
00012c00 117c00130016	move.b	#$13,obHeight(a0)
00012c06 117c00090017	move.b	#9,obWidth(a0)
00012c0c 217c000211e20004	move.l	#Map_Sonic,obMap(a0)
00012c14 317c07800002	move.w	#ArtTile_Sonic,obGfx(a0)
00012c1a 117c00020018	move.b	#2,obPriority(a0)
00012c20 117c00180019	move.b	#$18,obActWid(a0)
00012c26 117c00040001	move.b	#4,obRender(a0)
00012c2c 31fc0600f760	move.w	#$600,(v_sonspeedmax).w
00012c32 31fc000cf762	move.w	#$C,(v_sonspeedacc).w
00012c38 31fc0080f764	move.w	#$80,(v_sonspeeddec).w
00012c3e 4a78fffa	tst.w	(f_debugmode).w
00012c42 6714	beq.s	.nodebug
00012c44 08380004f605	btst	#bitB,(v_jpadpress1).w
00012c4a 670c	beq.s	.nodebug
00012c4c 31fc0001fe08	move.w	#1,(v_debuguse).w
00012c52 4238f7cc	clr.b	(f_lockctrl).w
00012c56 4e75	rts	
00012c58 4a38f7cc	tst.b	(f_lockctrl).w
00012c5c 6606	bne.s	.ignorecontrols
00012c5e 31f8f604f602	move.w	(v_jpadhold1).w,(v_jpadhold2).w
00012c64 08380000f7c8	btst	#0,(f_playerctrl).w
00012c6a 6612	bne.s	.ignoremodes
00012c6c 7000	moveq	#0,d0
00012c6e 10280022	move.b	obStatus(a0),d0
00012c72 02400006	andi.w	#%0110,d0
00012c76 323b0048	move.w	Sonic_Modes(pc,d0.w),d1
00012c7a 4ebb1044	jsr	Sonic_Modes(pc,d1.w)
00012c7e 614e	bsr.s	Sonic_Display
00012c80 610000dc	bsr.w	Sonic_RecordPosition
00012c84 610000f2	bsr.w	Sonic_Water
00012c88 1178f7680036	move.b	(v_anglebuffer).w,angleright(a0)
00012c8e 1178f76a0037	move.b	(v_anglebuffer2).w,angleleft(a0)
00012c94 4a38f7c7	tst.b	(f_wtunnelmode).w
00012c98 670c	beq.s	.nowindtunnel
00012c9a 4a28001c	tst.b	obAnim(a0)
00012c9e 6606	bne.s	.nowindtunnel
00012ca0 1168001d001c	move.b	obPrevAni(a0),obAnim(a0)
00012ca6 61000d1c	bsr.w	Sonic_Animate
00012caa 4a38f7c8	tst.b	(f_playerctrl).w
00012cae 6b06	bmi.s	.ignoreobjcoll
00012cb0 4eb90001ade4	jsr	(ReactToItem).l
00012cb6 61000c5e	bsr.w	Sonic_Loops
00012cba 61000f82	bsr.w	Sonic_LoadGfx
00012cbe 4e75	rts	
00012cce 30280030	move.w	flashtime(a0),d0
00012cd2 6708	beq.s	.display
00012cd4 53680030	subq.w	#1,flashtime(a0)
00012cd8 e648	lsr.w	#3,d0
00012cda 6406	bcc.s	.chkinvincible
00012cdc 4eb90000d604	jsr	(DisplaySprite).l
00012ce2 4a38fe2d	tst.b	(v_invinc).w
00012ce6 6740	beq.s	.chkshoes
00012ce8 4a680032	tst.w	invtime(a0)
00012cec 673a	beq.s	.chkshoes
00012cee 53680032	subq.w	#1,invtime(a0)
00012cf2 6634	bne.s	.chkshoes
00012cf4 4a38f7aa	tst.b	(f_lockscreen).w
00012cf8 6628	bne.s	.removeinvincible
00012cfa 0c78000cfe14	cmpi.w	#12,(v_air).w
00012d00 6520	blo.s	.removeinvincible
00012d02 7000	moveq	#0,d0
00012d04 1038fe10	move.b	(v_zone).w,d0
00012d08 0c780103fe10	cmpi.w	#id_LZ_act4,(v_zone).w
00012d0e 6602	bne.s	.music
00012d10 7005	moveq	#5,d0
00012d12 43f900012cc8	lea	(MusicList2).l,a1
00012d18 10310000	move.b	(a1,d0.w),d0
00012d1c 4eb900001396	jsr	(QueueSound1).l
00012d22 11fc0000fe2d	move.b	#0,(v_invinc).w
00012d28 4a38fe2e	tst.b	(v_shoes).w
00012d2c 672e	beq.s	.return
00012d2e 4a680034	tst.w	shoetime(a0)
00012d32 6728	beq.s	.return
00012d34 53680034	subq.w	#1,shoetime(a0)
00012d38 6622	bne.s	.return
00012d3a 31fc0600f760	move.w	#$600,(v_sonspeedmax).w
00012d40 31fc000cf762	move.w	#$C,(v_sonspeedacc).w
00012d46 31fc0080f764	move.w	#$80,(v_sonspeeddec).w
00012d4c 11fc0000fe2e	move.b	#0,(v_shoes).w
00012d52 303c00e3	move.w	#bgm_Slowdown,d0
00012d56 4ef900001396	jmp	(QueueSound1).l
00012d5c 4e75	rts	
00012d5e 3038f7a8	move.w	(v_trackpos).w,d0
00012d62 43f8cb00	lea	(v_tracksonic).w,a1
00012d66 43f10000	lea	(a1,d0.w),a1
00012d6a 32e80008	move.w	obX(a0),(a1)+
00012d6e 32e8000c	move.w	obY(a0),(a1)+
00012d72 5838f7a9	addq.b	#4,(v_trackbyte).w
00012d76 4e75	rts	
00012d78 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00012d7e 6702	beq.s	.islabyrinth
00012d80 4e75	rts	
00012d82 3038f646	move.w	(v_waterpos1).w,d0
00012d86 b068000c	cmp.w	obY(a0),d0
00012d8a 6c48	bge.s	.abovewater
00012d8c 08e800060022	bset	#6,obStatus(a0)
00012d92 66ec	bne.s	.return
00012d94 610012f8	bsr.w	ResumeMusic
00012d98 11fc000ad340	move.b	#id_DrownCount,(v_sonicbubbles).w
00012d9e 11fc0081d368	move.b	#$81,(v_sonicbubbles+obSubtype).w
00012da4 31fc0300f760	move.w	#$300,(v_sonspeedmax).w
00012daa 31fc0006f762	move.w	#6,(v_sonspeedacc).w
00012db0 31fc0040f764	move.w	#$40,(v_sonspeeddec).w
00012db6 e0e80010	asr.w	obVelX(a0)
00012dba e0e80012	asr.w	obVelY(a0)
00012dbe e0e80012	asr.w	obVelY(a0)
00012dc2 67bc	beq.s	.return
00012dc4 11fc0008d300	move.b	#id_Splash,(v_splash).w
00012dca 303c00aa	move.w	#sfx_Splash,d0
00012dce 4ef90000139c	jmp	(QueueSound2).l
00012dd4 08a800060022	bclr	#6,obStatus(a0)
00012dda 67a4	beq.s	.return
00012ddc 610012b0	bsr.w	ResumeMusic
00012de0 31fc0600f760	move.w	#$600,(v_sonspeedmax).w
00012de6 31fc000cf762	move.w	#$C,(v_sonspeedacc).w
00012dec 31fc0080f764	move.w	#$80,(v_sonspeeddec).w
00012df2 e1e80012	asl.w	obVelY(a0)
00012df6 6700ff88	beq.w	.return
00012dfa 11fc0008d300	move.b	#id_Splash,(v_splash).w
00012e00 0c68f0000012	cmpi.w	#-$1000,obVelY(a0)
00012e06 6e06	bgt.s	.belowmaxspeed
00012e08 317cf0000012	move.w	#-$1000,obVelY(a0)
00012e0e 303c00aa	move.w	#sfx_Splash,d0
00012e12 4ef90000139c	jmp	(QueueSound2).l
00012e18 610005d0	bsr.w	Sonic_Jump
00012e1c 610006b6	bsr.w	Sonic_SlopeResistWalk
00012e20 6100008e	bsr.w	Sonic_Move
00012e24 6100055e	bsr.w	Sonic_Roll
00012e28 610004da	bsr.w	Sonic_LevelBound
00012e2c 4eb90000d5de	jsr	(SpeedToPos).l
00012e32 610017ba	bsr.w	Sonic_AnglePos
00012e36 6100070e	bsr.w	Sonic_SlopeRepel
00012e3a 4e75	rts	
00012e3c 6100065a	bsr.w	Sonic_JumpHeight
00012e40 61000406	bsr.w	Sonic_JumpDirection
00012e44 610004be	bsr.w	Sonic_LevelBound
00012e48 4eb90000d5b2	jsr	(ObjectFall).l
00012e4e 082800060022	btst	#6,obStatus(a0)
00012e54 6706	beq.s	.notunderwater
00012e56 046800280012	subi.w	#$28,obVelY(a0)
00012e5c 6100072a	bsr.w	Sonic_JumpAngle
00012e60 61000742	bsr.w	Sonic_Floor
00012e64 4e75	rts	
00012e66 61000582	bsr.w	Sonic_Jump
00012e6a 6100069e	bsr.w	Sonic_SlopeResistRoll
00012e6e 610002e0	bsr.w	Sonic_RollSpeed
00012e72 61000490	bsr.w	Sonic_LevelBound
00012e76 4eb90000d5de	jsr	(SpeedToPos).l
00012e7c 61001770	bsr.w	Sonic_AnglePos
00012e80 610006c4	bsr.w	Sonic_SlopeRepel
00012e84 4e75	rts	
00012e86 61000610	bsr.w	Sonic_JumpHeight
00012e8a 610003bc	bsr.w	Sonic_JumpDirection
00012e8e 61000474	bsr.w	Sonic_LevelBound
00012e92 4eb90000d5b2	jsr	(ObjectFall).l
00012e98 082800060022	btst	#6,obStatus(a0)
00012e9e 6706	beq.s	.notunderwater
00012ea0 046800280012	subi.w	#$28,obVelY(a0)
00012ea6 610006e0	bsr.w	Sonic_JumpAngle
00012eaa 610006f8	bsr.w	Sonic_Floor
00012eae 4e75	rts	
00012eb0 3c38f760	move.w	(v_sonspeedmax).w,d6
00012eb4 3a38f762	move.w	(v_sonspeedacc).w,d5
00012eb8 3838f764	move.w	(v_sonspeeddec).w,d4
00012ebc 4a38f7ca	tst.b	(f_slidemode).w
00012ec0 6600012c	bne.w	Sonic_AngleSpeed
00012ec4 4a68003e	tst.w	locktime(a0)
00012ec8 660000e6	bne.w	Sonic_ResetScr
00012ecc 08380002f602	btst	#bitL,(v_jpadhold2).w
00012ed2 6704	beq.s	.notleft
00012ed4 610001a8	bsr.w	Sonic_MoveLeft
00012ed8 08380003f602	btst	#bitR,(v_jpadhold2).w
00012ede 6704	beq.s	.notright
00012ee0 61000208	bsr.w	Sonic_MoveRight
00012ee4 10280026	move.b	obAngle(a0),d0
00012ee8 06000020	addi.b	#$20,d0
00012eec 020000c0	andi.b	#$C0,d0
00012ef0 660000be	bne.w	Sonic_ResetScr
00012ef4 4a680014	tst.w	obInertia(a0)
00012ef8 660000b6	bne.w	Sonic_ResetScr
00012efc 08a800050022	bclr	#5,obStatus(a0)
00012f02 117c0005001c	move.b	#id_Wait,obAnim(a0)
00012f08 082800030022	btst	#3,obStatus(a0)
00012f0e 6736	beq.s	.chkbalance
00012f10 7000	moveq	#0,d0
00012f12 1028003d	move.b	standonobject(a0),d0
00012f16 ed48	lsl.w	#object_size_bits,d0
00012f18 43f8d000	lea	(v_objspace).w,a1
00012f1c 43f10000	lea	(a1,d0.w),a1
00012f20 4a290022	tst.b	obStatus(a1)
00012f24 6b52	bmi.s	Sonic_LookUp
00012f26 7200	moveq	#0,d1
00012f28 12290019	move.b	obActWid(a1),d1
00012f2c 3401	move.w	d1,d2
00012f2e d442	add.w	d2,d2
00012f30 5942	subq.w	#4,d2
00012f32 d2680008	add.w	obX(a0),d1
00012f36 92690008	sub.w	obX(a1),d1
00012f3a 0c410004	cmpi.w	#4,d1
00012f3e 6d2a	blt.s	.leftbalance
00012f40 b242	cmp.w	d2,d1
00012f42 6c16	bge.s	.rightbalance
00012f44 6032	bra.s	Sonic_LookUp
00012f46 4eb900014e18	jsr	(ObjFloorDist).l
00012f4c 0c41000c	cmpi.w	#12,d1
00012f50 6d26	blt.s	Sonic_LookUp
00012f52 0c2800030036	cmpi.b	#3,angleright(a0)
00012f58 6608	bne.s	.chkleftedge
00012f5a 08a800000022	bclr	#0,obStatus(a0)
00012f60 600e	bra.s	.balance
00012f62 0c2800030037	cmpi.b	#3,angleleft(a0)
00012f68 660e	bne.s	Sonic_LookUp
00012f6a 08e800000022	bset	#0,obStatus(a0)
00012f70 117c0006001c	move.b	#id_Balance,obAnim(a0)
00012f76 6038	bra.s	Sonic_ResetScr
00012f78 08380000f602	btst	#bitUp,(v_jpadhold2).w
00012f7e 6714	beq.s	Sonic_Duck
00012f80 117c0007001c	move.b	#id_LookUp,obAnim(a0)
00012f86 0c7800c8f73e	cmpi.w	#$C8,(v_lookshift).w
00012f8c 6734	beq.s	Sonic_CheckDpadLetGo
00012f8e 5478f73e	addq.w	#2,(v_lookshift).w
00012f92 602e	bra.s	Sonic_CheckDpadLetGo
00012f94 08380001f602	btst	#bitDn,(v_jpadhold2).w
00012f9a 6714	beq.s	Sonic_ResetScr
00012f9c 117c0008001c	move.b	#id_Duck,obAnim(a0)
00012fa2 0c780008f73e	cmpi.w	#8,(v_lookshift).w
00012fa8 6718	beq.s	Sonic_CheckDpadLetGo
00012faa 5578f73e	subq.w	#2,(v_lookshift).w
00012fae 6012	bra.s	Sonic_CheckDpadLetGo
00012fb0 0c780060f73e	cmpi.w	#$60,(v_lookshift).w
00012fb6 670a	beq.s	Sonic_CheckDpadLetGo
00012fb8 6404	bcc.s	.resetdown
00012fba 5878f73e	addq.w	#4,(v_lookshift).w
00012fbe 5578f73e	subq.w	#2,(v_lookshift).w
00012fc2 1038f602	move.b	(v_jpadhold2).w,d0
00012fc6 0200000c	andi.b	#btnL+btnR,d0
00012fca 6622	bne.s	Sonic_AngleSpeed
00012fcc 30280014	move.w	obInertia(a0),d0
00012fd0 671c	beq.s	Sonic_AngleSpeed
00012fd2 6b0e	bmi.s	.movingleftward
00012fd4 9045	sub.w	d5,d0
00012fd6 6404	bcc.s	.stillright
00012fd8 303c0000	move.w	#0,d0
00012fdc 31400014	move.w	d0,obInertia(a0)
00012fe0 600c	bra.s	Sonic_AngleSpeed
00012fe2 d045	add.w	d5,d0
00012fe4 6404	bcc.s	.stillleft
00012fe6 303c0000	move.w	#0,d0
00012fea 31400014	move.w	d0,obInertia(a0)
00012fee 10280026	move.b	obAngle(a0),d0
00012ff2 4eb9000029da	jsr	(CalcSine).l
00012ff8 c3e80014	muls.w	obInertia(a0),d1
00012ffc e081	asr.l	#8,d1
00012ffe 31410010	move.w	d1,obVelX(a0)
00013002 c1e80014	muls.w	obInertia(a0),d0
00013006 e080	asr.l	#8,d0
00013008 31400012	move.w	d0,obVelY(a0)
0001300c 10280026	move.b	obAngle(a0),d0
00013010 06000040	addi.b	#$40,d0
00013014 6b66	bmi.s	.return
00013016 123c0040	move.b	#$40,d1
0001301a 4a680014	tst.w	obInertia(a0)
0001301e 675c	beq.s	.return
00013020 6b02	bmi.s	.negspeed
00013022 4441	neg.w	d1
00013024 10280026	move.b	obAngle(a0),d0
00013028 d001	add.b	d1,d0
0001302a 3f00	move.w	d0,-(sp)
0001302c 61001cb0	bsr.w	Sonic_CalcRoomAhead
00013030 301f	move.w	(sp)+,d0
00013032 4a41	tst.w	d1
00013034 6a46	bpl.s	.return
00013036 e141	asl.w	#8,d1
00013038 06000020	addi.b	#$20,d0
0001303c 020000c0	andi.b	#$C0,d0
00013040 6736	beq.s	.hitdown
00013042 0c000040	cmpi.b	#$40,d0
00013046 671e	beq.s	.hitleft
00013048 0c000080	cmpi.b	#$80,d0
0001304c 6712	beq.s	.hitup
0001304e d3680010	add.w	d1,obVelX(a0)
00013052 08e800050022	bset	#5,obStatus(a0)
00013058 317c00000014	move.w	#0,obInertia(a0)
0001305e 4e75	rts	
00013060 93680012	sub.w	d1,obVelY(a0)
00013064 4e75	rts	
00013066 93680010	sub.w	d1,obVelX(a0)
0001306a 08e800050022	bset	#5,obStatus(a0)
00013070 317c00000014	move.w	#0,obInertia(a0)
00013076 4e75	rts	
00013078 d3680012	add.w	d1,obVelY(a0)
0001307c 4e75	rts	
0001307e 30280014	move.w	obInertia(a0),d0
00013082 6702	beq.s	.still
00013084 6a2c	bpl.s	.changeddirection
00013086 08e800000022	bset	#0,obStatus(a0)
0001308c 660c	bne.s	.alreadyleft
0001308e 08a800050022	bclr	#5,obStatus(a0)
00013094 117c0001001d	move.b	#id_Run,obPrevAni(a0)
0001309a 9045	sub.w	d5,d0
0001309c 3206	move.w	d6,d1
0001309e 4441	neg.w	d1
000130a0 b041	cmp.w	d1,d0
000130a2 6e02	bgt.s	.nocap
000130a4 3001	move.w	d1,d0
000130a6 31400014	move.w	d0,obInertia(a0)
000130aa 117c0000001c	move.b	#id_Walk,obAnim(a0)
000130b0 4e75	rts	
000130b2 9044	sub.w	d4,d0
000130b4 6404	bcc.s	.stilldecel
000130b6 303cff80	move.w	#-$80,d0
000130ba 31400014	move.w	d0,obInertia(a0)
000130be 10280026	move.b	obAngle(a0),d0
000130c2 06000020	addi.b	#$20,d0
000130c6 020000c0	andi.b	#$C0,d0
000130ca 661c	bne.s	.nostopping
000130cc 0c400400	cmpi.w	#$400,d0
000130d0 6d16	blt.s	.nostopping
000130d2 117c000d001c	move.b	#id_Stop,obAnim(a0)
000130d8 08a800000022	bclr	#0,obStatus(a0)
000130de 303c00a4	move.w	#sfx_Skid,d0
000130e2 4eb90000139c	jsr	(QueueSound2).l
000130e8 4e75	rts	
000130ea 30280014	move.w	obInertia(a0),d0
000130ee 6b28	bmi.s	.changedirection
000130f0 08a800000022	bclr	#0,obStatus(a0)
000130f6 670c	beq.s	.alreadyright
000130f8 08a800050022	bclr	#5,obStatus(a0)
000130fe 117c0001001d	move.b	#id_Run,obPrevAni(a0)
00013104 d045	add.w	d5,d0
00013106 b046	cmp.w	d6,d0
00013108 6d02	blt.s	.nocap
0001310a 3006	move.w	d6,d0
0001310c 31400014	move.w	d0,obInertia(a0)
00013110 117c0000001c	move.b	#id_Walk,obAnim(a0)
00013116 4e75	rts	
00013118 d044	add.w	d4,d0
0001311a 6404	bcc.s	.stilldecel
0001311c 303c0080	move.w	#$80,d0
00013120 31400014	move.w	d0,obInertia(a0)
00013124 10280026	move.b	obAngle(a0),d0
00013128 06000020	addi.b	#$20,d0
0001312c 020000c0	andi.b	#$C0,d0
00013130 661c	bne.s	.nostopping
00013132 0c40fc00	cmpi.w	#-$400,d0
00013136 6e16	bgt.s	.nostopping
00013138 117c000d001c	move.b	#id_Stop,obAnim(a0)
0001313e 08e800000022	bset	#0,obStatus(a0)
00013144 303c00a4	move.w	#sfx_Skid,d0
00013148 4eb90000139c	jsr	(QueueSound2).l
0001314e 4e75	rts	
00013150 3c38f760	move.w	(v_sonspeedmax).w,d6
00013154 e346	asl.w	#1,d6
00013156 3a38f762	move.w	(v_sonspeedacc).w,d5
0001315a e245	asr.w	#1,d5
0001315c 3838f764	move.w	(v_sonspeeddec).w,d4
00013160 e444	asr.w	#2,d4
00013162 4a38f7ca	tst.b	(f_slidemode).w
00013166 66000064	bne.w	Sonic_AngledRollSpeed
0001316a 4a68003e	tst.w	locktime(a0)
0001316e 6618	bne.s	.notright
00013170 08380002f602	btst	#bitL,(v_jpadhold2).w
00013176 6704	beq.s	.notleft
00013178 61000088	bsr.w	Sonic_RollLeft
0001317c 08380003f602	btst	#bitR,(v_jpadhold2).w
00013182 6704	beq.s	.notright
00013184 610000a0	bsr.w	Sonic_RollRight
00013188 30280014	move.w	obInertia(a0),d0
0001318c 671c	beq.s	Sonic_RollSlowdownDone
0001318e 6b0e	bmi.s	.rollingleft
00013190 9045	sub.w	d5,d0
00013192 6404	bcc.s	.stillrollingright
00013194 303c0000	move.w	#0,d0
00013198 31400014	move.w	d0,obInertia(a0)
0001319c 600c	bra.s	Sonic_RollSlowdownDone
0001319e d045	add.w	d5,d0
000131a0 6404	bcc.s	.stillrollingleft
000131a2 303c0000	move.w	#0,d0
000131a6 31400014	move.w	d0,obInertia(a0)
000131aa 4a680014	tst.w	obInertia(a0)
000131ae 661c	bne.s	Sonic_AngledRollSpeed
000131b0 08a800020022	bclr	#2,obStatus(a0)
000131b6 117c00130016	move.b	#$13,obHeight(a0)
000131bc 117c00090017	move.b	#9,obWidth(a0)
000131c2 117c0005001c	move.b	#id_Wait,obAnim(a0)
000131c8 5b68000c	subq.w	#5,obY(a0)
000131cc 10280026	move.b	obAngle(a0),d0
000131d0 4eb9000029da	jsr	(CalcSine).l
000131d6 c1e80014	muls.w	obInertia(a0),d0
000131da e080	asr.l	#8,d0
000131dc 31400012	move.w	d0,obVelY(a0)
000131e0 c3e80014	muls.w	obInertia(a0),d1
000131e4 e081	asr.l	#8,d1
000131e6 0c411000	cmpi.w	#$1000,d1
000131ea 6f04	ble.s	.noPosIntCapX
000131ec 323c1000	move.w	#$1000,d1
000131f0 0c41f000	cmpi.w	#-$1000,d1
000131f4 6c04	bge.s	.noNegIntCapX
000131f6 323cf000	move.w	#-$1000,d1
000131fa 31410010	move.w	d1,obVelX(a0)
000131fe 6000fe0c	bra.w	Sonic_WallSpeedAdjust
00013202 30280014	move.w	obInertia(a0),d0
00013206 6702	beq.s	.still
00013208 6a0e	bpl.s	.changeddirection
0001320a 08e800000022	bset	#0,obStatus(a0)
00013210 117c0002001c	move.b	#id_Roll,obAnim(a0)
00013216 4e75	rts	
00013218 9044	sub.w	d4,d0
0001321a 6404	bcc.s	.stilldecel
0001321c 303cff80	move.w	#-$80,d0
00013220 31400014	move.w	d0,obInertia(a0)
00013224 4e75	rts	
00013226 30280014	move.w	obInertia(a0),d0
0001322a 6b0e	bmi.s	.changedirection
0001322c 08a800000022	bclr	#0,obStatus(a0)
00013232 117c0002001c	move.b	#id_Roll,obAnim(a0)
00013238 4e75	rts	
0001323a d044	add.w	d4,d0
0001323c 6404	bcc.s	.stilldecel
0001323e 303c0080	move.w	#$80,d0
00013242 31400014	move.w	d0,obInertia(a0)
00013246 4e75	rts	
00013248 3c38f760	move.w	(v_sonspeedmax).w,d6
0001324c 3a38f762	move.w	(v_sonspeedacc).w,d5
00013250 e345	asl.w	#1,d5
00013252 082800040022	btst	#4,obStatus(a0)
00013258 6638	bne.s	Sonic_RollJumpLock
0001325a 30280010	move.w	obVelX(a0),d0
0001325e 08380002f602	btst	#bitL,(v_jpadhold2).w
00013264 6712	beq.s	.notleft
00013266 08e800000022	bset	#0,obStatus(a0)
0001326c 9045	sub.w	d5,d0
0001326e 3206	move.w	d6,d1
00013270 4441	neg.w	d1
00013272 b041	cmp.w	d1,d0
00013274 6e02	bgt.s	.notleft
00013276 3001	move.w	d1,d0
00013278 08380003f602	btst	#bitR,(v_jpadhold2).w
0001327e 670e	beq.s	Sonic_JumpMove
00013280 08a800000022	bclr	#0,obStatus(a0)
00013286 d045	add.w	d5,d0
00013288 b046	cmp.w	d6,d0
0001328a 6d02	blt.s	Sonic_JumpMove
0001328c 3006	move.w	d6,d0
0001328e 31400010	move.w	d0,obVelX(a0)
00013292 0c780060f73e	cmpi.w	#$60,(v_lookshift).w
00013298 670a	beq.s	Sonic_AirDrag
0001329a 6404	bcc.s	.resetdown
0001329c 5878f73e	addq.w	#4,(v_lookshift).w
000132a0 5578f73e	subq.w	#2,(v_lookshift).w
000132a4 0c68fc000012	cmpi.w	#-$400,obVelY(a0)
000132aa 6526	blo.s	.return
000132ac 30280010	move.w	obVelX(a0),d0
000132b0 3200	move.w	d0,d1
000132b2 ea41	asr.w	#5,d1
000132b4 671c	beq.s	.return
000132b6 6b0e	bmi.s	.jumpingleftward
000132b8 9041	sub.w	d1,d0
000132ba 6404	bcc.s	.stillright
000132bc 303c0000	move.w	#0,d0
000132c0 31400010	move.w	d0,obVelX(a0)
000132c4 4e75	rts	
000132c6 9041	sub.w	d1,d0
000132c8 6504	bcs.s	.stillleft
000132ca 303c0000	move.w	#0,d0
000132ce 31400010	move.w	d0,obVelX(a0)
000132d2 4e75	rts	
000132d4 10280026	move.b	obAngle(a0),d0
000132d8 06000020	addi.b	#$20,d0
000132dc 020000c0	andi.b	#$C0,d0
000132e0 6620	bne.s	.return
000132e2 61001c24	bsr.w	Sonic_FindCeiling
000132e6 4a41	tst.w	d1
000132e8 6a18	bpl.s	.return
000132ea 317c00000014	move.w	#0,obInertia(a0)
000132f0 317c00000010	move.w	#0,obVelX(a0)
000132f6 317c00000012	move.w	#0,obVelY(a0)
000132fc 117c000b001c	move.b	#id_Warp3,obAnim(a0)
00013302 4e75	rts	
00013304 22280008	move.l	obX(a0),d1
00013308 30280010	move.w	obVelX(a0),d0
0001330c 48c0	ext.l	d0
0001330e e180	asl.l	#8,d0
00013310 d280	add.l	d0,d1
00013312 4841	swap	d1
00013314 3038f728	move.w	(v_limitleft2).w,d0
00013318 06400010	addi.w	#16,d0
0001331c b041	cmp.w	d1,d0
0001331e 624c	bhi.s	.sides
00013320 3038f72a	move.w	(v_limitright2).w,d0
00013324 06400128	addi.w	#320-24,d0
00013328 4a38f7aa	tst.b	(f_lockscreen).w
0001332c 6604	bne.s	.screenlocked
0001332e 06400040	addi.w	#64,d0
00013332 b041	cmp.w	d1,d0
00013334 6336	bls.s	.sides
00013336 3038f72e	move.w	(v_limitbtm2).w,d0
0001333a 064000e0	addi.w	#224,d0
0001333e b068000c	cmp.w	obY(a0),d0
00013342 6d02	blt.s	.bottom
00013344 4e75	rts	
00013346 0c780501fe10	cmpi.w	#id_SBZ_act2,(v_zone).w
0001334c 66007d4a	bne.w	KillSonic
00013350 0c782000d008	cmpi.w	#$2000,(v_player+obX).w
00013356 65007d40	blo.w	KillSonic
0001335a 4238fe30	clr.b	(v_lastlamp).w
0001335e 31fc0001fe02	move.w	#1,(f_restart).w
00013364 31fc0103fe10	move.w	#id_LZ_act4,(v_zone).w
0001336a 4e75	rts	
0001336c 31400008	move.w	d0,obX(a0)
00013370 317c0000000a	move.w	#0,obSubpixelX(a0)
00013376 317c00000010	move.w	#0,obVelX(a0)
0001337c 317c00000014	move.w	#0,obInertia(a0)
00013382 60b2	bra.s	.chkbottom
00013384 4a38f7ca	tst.b	(f_slidemode).w
00013388 6620	bne.s	.noroll
0001338a 30280014	move.w	obInertia(a0),d0
0001338e 6a02	bpl.s	.ispositive
00013390 4440	neg.w	d0
00013392 0c400080	cmpi.w	#$80,d0
00013396 6512	blo.s	.noroll
00013398 1038f602	move.b	(v_jpadhold2).w,d0
0001339c 0200000c	andi.b	#btnL+btnR,d0
000133a0 6608	bne.s	.noroll
000133a2 08380001f602	btst	#bitDn,(v_jpadhold2).w
000133a8 6602	bne.s	Sonic_ChkRoll
000133aa 4e75	rts	
000133ac 082800020022	btst	#2,obStatus(a0)
000133b2 6702	beq.s	.roll
000133b4 4e75	rts	
000133b6 08e800020022	bset	#2,obStatus(a0)
000133bc 117c000e0016	move.b	#$E,obHeight(a0)
000133c2 117c00070017	move.b	#7,obWidth(a0)
000133c8 117c0002001c	move.b	#id_Roll,obAnim(a0)
000133ce 5a68000c	addq.w	#5,obY(a0)
000133d2 303c00be	move.w	#sfx_Roll,d0
000133d6 4eb90000139c	jsr	(QueueSound2).l
000133dc 4a680014	tst.w	obInertia(a0)
000133e0 6606	bne.s	.ismoving
000133e2 317c02000014	move.w	#$200,obInertia(a0)
000133e8 4e75	rts	
000133ea 1038f603	move.b	(v_jpadpress2).w,d0
000133ee 02000070	andi.b	#btnABC,d0
000133f2 6700009a	beq.w	.return
000133f6 7000	moveq	#0,d0
000133f8 10280026	move.b	obAngle(a0),d0
000133fc 06000080	addi.b	#$80,d0
00013400 61001946	bsr.w	Sonic_CalcHeadroom
00013404 0c410006	cmpi.w	#6,d1
00013408 6d000084	blt.w	.return
0001340c 343c0680	move.w	#$680,d2
00013410 082800060022	btst	#6,obStatus(a0)
00013416 6704	beq.s	.notunderwater
00013418 343c0380	move.w	#$380,d2
0001341c 7000	moveq	#0,d0
0001341e 10280026	move.b	obAngle(a0),d0
00013422 04000040	subi.b	#$40,d0
00013426 4eb9000029da	jsr	(CalcSine).l
0001342c c3c2	muls.w	d2,d1
0001342e e081	asr.l	#8,d1
00013430 d3680010	add.w	d1,obVelX(a0)
00013434 c1c2	muls.w	d2,d0
00013436 e080	asr.l	#8,d0
00013438 d1680012	add.w	d0,obVelY(a0)
0001343c 08e800010022	bset	#1,obStatus(a0)
00013442 08a800050022	bclr	#5,obStatus(a0)
00013448 588f	addq.l	#4,sp
0001344a 117c0001003c	move.b	#1,jumping(a0)
00013450 42280038	clr.b	sticktoconvex(a0)
00013454 303c00a0	move.w	#sfx_Jump,d0
00013458 4eb90000139c	jsr	(QueueSound2).l
0001345e 117c00130016	move.b	#$13,obHeight(a0)
00013464 117c00090017	move.b	#9,obWidth(a0)
0001346a 082800020022	btst	#2,obStatus(a0)
00013470 661e	bne.s	.rolljump
00013472 117c000e0016	move.b	#$E,obHeight(a0)
00013478 117c00070017	move.b	#7,obWidth(a0)
0001347e 117c0002001c	move.b	#id_Roll,obAnim(a0)
00013484 08e800020022	bset	#2,obStatus(a0)
0001348a 5a68000c	addq.w	#5,obY(a0)
0001348e 4e75	rts	
00013490 08e800040022	bset	#4,obStatus(a0)
00013496 4e75	rts	
00013498 4a28003c	tst.b	jumping(a0)
0001349c 6726	beq.s	.capyvel
0001349e 323cfc00	move.w	#-$400,d1
000134a2 082800060022	btst	#6,obStatus(a0)
000134a8 6704	beq.s	.notunderwater
000134aa 323cfe00	move.w	#-$200,d1
000134ae b2680012	cmp.w	obVelY(a0),d1
000134b2 6f0e	ble.s	.return
000134b4 1038f602	move.b	(v_jpadhold2).w,d0
000134b8 02000070	andi.b	#btnABC,d0
000134bc 6604	bne.s	.return
000134be 31410012	move.w	d1,obVelY(a0)
000134c2 4e75	rts	
000134c4 0c68f0400012	cmpi.w	#-$FC0,obVelY(a0)
000134ca 6c06	bge.s	.return2
000134cc 317cf0400012	move.w	#-$FC0,obVelY(a0)
000134d2 4e75	rts	
000134d4 10280026	move.b	obAngle(a0),d0
000134d8 06000060	addi.b	#$60,d0
000134dc 0c0000c0	cmpi.b	#$C0,d0
000134e0 6426	bhs.s	.return
000134e2 10280026	move.b	obAngle(a0),d0
000134e6 4eb9000029da	jsr	(CalcSine).l
000134ec c1fc0020	muls.w	#$20,d0
000134f0 e080	asr.l	#8,d0
000134f2 4a680014	tst.w	obInertia(a0)
000134f6 6710	beq.s	.return
000134f8 6b0a	bmi.s	.left
000134fa 4a40	tst.w	d0
000134fc 6704	beq.s	.noresist
000134fe d1680014	add.w	d0,obInertia(a0)
00013502 4e75	rts	
00013504 d1680014	add.w	d0,obInertia(a0)
00013508 4e75	rts	
0001350a 10280026	move.b	obAngle(a0),d0
0001350e 06000060	addi.b	#$60,d0
00013512 0c0000c0	cmpi.b	#$C0,d0
00013516 642c	bhs.s	.return
00013518 10280026	move.b	obAngle(a0),d0
0001351c 4eb9000029da	jsr	(CalcSine).l
00013522 c1fc0050	muls.w	#$50,d0
00013526 e080	asr.l	#8,d0
00013528 4a680014	tst.w	obInertia(a0)
0001352c 6b0c	bmi.s	.left
0001352e 4a40	tst.w	d0
00013530 6a02	bpl.s	.resistright
00013532 e480	asr.l	#2,d0
00013534 d1680014	add.w	d0,obInertia(a0)
00013538 4e75	rts	
0001353a 4a40	tst.w	d0
0001353c 6b02	bmi.s	.resistleft
0001353e e480	asr.l	#2,d0
00013540 d1680014	add.w	d0,obInertia(a0)
00013544 4e75	rts	
00013546 4e71	nop	
00013548 4a280038	tst.b	sticktoconvex(a0)
0001354c 6632	bne.s	.return
0001354e 4a68003e	tst.w	locktime(a0)
00013552 662e	bne.s	.decrementlocktime
00013554 10280026	move.b	obAngle(a0),d0
00013558 06000020	addi.b	#$20,d0
0001355c 020000c0	andi.b	#$C0,d0
00013560 671e	beq.s	.return
00013562 30280014	move.w	obInertia(a0),d0
00013566 6a02	bpl.s	.posinertia
00013568 4440	neg.w	d0
0001356a 0c400280	cmpi.w	#$280,d0
0001356e 6410	bhs.s	.return
00013570 42680014	clr.w	obInertia(a0)
00013574 08e800010022	bset	#1,obStatus(a0)
0001357a 317c001e003e	move.w	#30,locktime(a0)
00013580 4e75	rts	
00013582 5368003e	subq.w	#1,locktime(a0)
00013586 4e75	rts	
00013588 10280026	move.b	obAngle(a0),d0
0001358c 6714	beq.s	.return
0001358e 6a08	bpl.s	.decrease
00013590 5400	addq.b	#2,d0
00013592 6402	bcc.s	.dontclear
00013594 7000	moveq	#0,d0
00013596 6006	bra.s	.applyangle
00013598 5500	subq.b	#2,d0
0001359a 6402	bcc.s	.applyangle
0001359c 7000	moveq	#0,d0
0001359e 11400026	move.b	d0,obAngle(a0)
000135a2 4e75	rts	
000135a4 32280010	move.w	obVelX(a0),d1
000135a8 34280012	move.w	obVelY(a0),d2
000135ac 4eb900002ca8	jsr	(CalcAngle).l
000135b2 11c0ffec	move.b	d0,(v_unused3).w
000135b6 04000020	subi.b	#$20,d0
000135ba 11c0ffed	move.b	d0,(v_unused4).w
000135be 020000c0	andi.b	#$C0,d0
000135c2 11c0ffee	move.b	d0,(v_unused5).w
000135c6 0c000040	cmpi.b	#$40,d0
000135ca 670000b4	beq.w	Sonic_FloorLeft
000135ce 0c000080	cmpi.b	#$80,d0
000135d2 6700010e	beq.w	Sonic_FloorUp
000135d6 0c0000c0	cmpi.b	#$C0,d0
000135da 67000162	beq.w	Sonic_FloorRight
000135de 61001a62	bsr.w	Sonic_FindWallLeft_Quick_UsePos
000135e2 4a41	tst.w	d1
000135e4 6a0a	bpl.s	.noleftgraze
000135e6 93680008	sub.w	d1,obX(a0)
000135ea 317c00000010	move.w	#0,obVelX(a0)
000135f0 610018c2	bsr.w	Sonic_FindWallRight_Quick_UsePos
000135f4 4a41	tst.w	d1
000135f6 6a0a	bpl.s	.norightgraze
000135f8 d3680008	add.w	d1,obX(a0)
000135fc 317c00000010	move.w	#0,obVelX(a0)
00013602 6100176c	bsr.w	Sonic_FindFloor
00013606 11c1ffef	move.b	d1,(v_unused6).w
0001360a 4a41	tst.w	d1
0001360c 6a70	bpl.s	.return
0001360e 14280012	move.b	obVelY(a0),d2
00013612 5002	addq.b	#8,d2
00013614 4402	neg.b	d2
00013616 b202	cmp.b	d2,d1
00013618 6c04	bge.s	.landed
0001361a b002	cmp.b	d2,d0
0001361c 6d60	blt.s	.return
0001361e d368000c	add.w	d1,obY(a0)
00013622 11430026	move.b	d3,obAngle(a0)
00013626 61000178	bsr.w	Sonic_ResetOnFloor
0001362a 117c0000001c	move.b	#id_Walk,obAnim(a0)
00013630 1003	move.b	d3,d0
00013632 06000020	addi.b	#$20,d0
00013636 02000040	andi.b	#$40,d0
0001363a 6620	bne.s	.steepslope
0001363c 1003	move.b	d3,d0
0001363e 06000010	addi.b	#$10,d0
00013642 02000020	andi.b	#$20,d0
00013646 6706	beq.s	.flatsurface
00013648 e0e80012	asr.w	obVelY(a0)
0001364c 6022	bra.s	.noslopecap
0001364e 317c00000012	move.w	#0,obVelY(a0)
00013654 316800100014	move.w	obVelX(a0),obInertia(a0)
0001365a 4e75	rts	
0001365c 317c00000010	move.w	#0,obVelX(a0)
00013662 0c680fc00012	cmpi.w	#$FC0,obVelY(a0)
00013668 6f06	ble.s	.noslopecap
0001366a 317c0fc00012	move.w	#$FC0,obVelY(a0)
00013670 316800120014	move.w	obVelY(a0),obInertia(a0)
00013676 4a03	tst.b	d3
00013678 6a04	bpl.s	.return
0001367a 44680014	neg.w	obInertia(a0)
0001367e 4e75	rts	
00013680 610019c0	bsr.w	Sonic_FindWallLeft_Quick_UsePos
00013684 4a41	tst.w	d1
00013686 6a12	bpl.s	.noleftgraze
00013688 93680008	sub.w	d1,obX(a0)
0001368c 317c00000010	move.w	#0,obVelX(a0)
00013692 316800120014	move.w	obVelY(a0),obInertia(a0)
00013698 4e75	rts	
0001369a 6100186c	bsr.w	Sonic_FindCeiling
0001369e 4a41	tst.w	d1
000136a0 6a12	bpl.s	.noceiling
000136a2 9368000c	sub.w	d1,obY(a0)
000136a6 4a680012	tst.w	obVelY(a0)
000136aa 6a06	bpl.s	.noyspeedreset
000136ac 317c00000012	move.w	#0,obVelY(a0)
000136b2 4e75	rts	
000136b4 4a680012	tst.w	obVelY(a0)
000136b8 6b26	bmi.s	.return
000136ba 610016b4	bsr.w	Sonic_FindFloor
000136be 4a41	tst.w	d1
000136c0 6a1e	bpl.s	.return
000136c2 d368000c	add.w	d1,obY(a0)
000136c6 11430026	move.b	d3,obAngle(a0)
000136ca 610000d4	bsr.w	Sonic_ResetOnFloor
000136ce 117c0000001c	move.b	#id_Walk,obAnim(a0)
000136d4 317c00000012	move.w	#0,obVelY(a0)
000136da 316800100014	move.w	obVelX(a0),obInertia(a0)
000136e0 4e75	rts	
000136e2 6100195e	bsr.w	Sonic_FindWallLeft_Quick_UsePos
000136e6 4a41	tst.w	d1
000136e8 6a0a	bpl.s	.noleftgraze
000136ea 93680008	sub.w	d1,obX(a0)
000136ee 317c00000010	move.w	#0,obVelX(a0)
000136f4 610017be	bsr.w	Sonic_FindWallRight_Quick_UsePos
000136f8 4a41	tst.w	d1
000136fa 6a0a	bpl.s	.norightgraze
000136fc d3680008	add.w	d1,obX(a0)
00013700 317c00000010	move.w	#0,obVelX(a0)
00013706 61001800	bsr.w	Sonic_FindCeiling
0001370a 4a41	tst.w	d1
0001370c 6a2e	bpl.s	.return
0001370e 9368000c	sub.w	d1,obY(a0)
00013712 1003	move.b	d3,d0
00013714 06000020	addi.b	#$20,d0
00013718 02000040	andi.b	#$40,d0
0001371c 6608	bne.s	.angledceiling
0001371e 317c00000012	move.w	#0,obVelY(a0)
00013724 4e75	rts	
00013726 11430026	move.b	d3,obAngle(a0)
0001372a 61000074	bsr.w	Sonic_ResetOnFloor
0001372e 316800120014	move.w	obVelY(a0),obInertia(a0)
00013734 4a03	tst.b	d3
00013736 6a04	bpl.s	.return
00013738 44680014	neg.w	obInertia(a0)
0001373c 4e75	rts	
0001373e 61001774	bsr.w	Sonic_FindWallRight_Quick_UsePos
00013742 4a41	tst.w	d1
00013744 6a12	bpl.s	.norightgraze
00013746 d3680008	add.w	d1,obX(a0)
0001374a 317c00000010	move.w	#0,obVelX(a0)
00013750 316800120014	move.w	obVelY(a0),obInertia(a0)
00013756 4e75	rts	
00013758 610017ae	bsr.w	Sonic_FindCeiling
0001375c 4a41	tst.w	d1
0001375e 6a12	bpl.s	.noceiling
00013760 9368000c	sub.w	d1,obY(a0)
00013764 4a680012	tst.w	obVelY(a0)
00013768 6a06	bpl.s	.noyspeedreset
0001376a 317c00000012	move.w	#0,obVelY(a0)
00013770 4e75	rts	
00013772 4a680012	tst.w	obVelY(a0)
00013776 6b26	bmi.s	.return
00013778 610015f6	bsr.w	Sonic_FindFloor
0001377c 4a41	tst.w	d1
0001377e 6a1e	bpl.s	.return
00013780 d368000c	add.w	d1,obY(a0)
00013784 11430026	move.b	d3,obAngle(a0)
00013788 61000016	bsr.w	Sonic_ResetOnFloor
0001378c 117c0000001c	move.b	#id_Walk,obAnim(a0)
00013792 317c00000012	move.w	#0,obVelY(a0)
00013798 316800100014	move.w	obVelX(a0),obInertia(a0)
0001379e 4e75	rts	
000137a0 082800040022	btst	#4,obStatus(a0)
000137a6 6706	beq.s	.notrolljump
000137a8 4e71	nop	
000137aa 4e71	nop	
000137ac 4e71	nop	
000137ae 08a800050022	bclr	#5,obStatus(a0)
000137b4 08a800010022	bclr	#1,obStatus(a0)
000137ba 08a800040022	bclr	#4,obStatus(a0)
000137c0 082800020022	btst	#2,obStatus(a0)
000137c6 671c	beq.s	.notball
000137c8 08a800020022	bclr	#2,obStatus(a0)
000137ce 117c00130016	move.b	#$13,obHeight(a0)
000137d4 117c00090017	move.b	#9,obWidth(a0)
000137da 117c0000001c	move.b	#id_Walk,obAnim(a0)
000137e0 5b68000c	subq.w	#5,obY(a0)
000137e4 117c0000003c	move.b	#0,jumping(a0)
000137ea 31fc0000f7d0	move.w	#0,(v_itembonus).w
000137f0 4e75	rts	
000137f2 4eb90000d5de	jsr	(SpeedToPos).l
000137f8 066800300012	addi.w	#$30,obVelY(a0)
000137fe 082800060022	btst	#6,obStatus(a0)
00013804 6706	beq.s	.notunderwater
00013806 046800200012	subi.w	#$20,obVelY(a0)
0001380c 61000018	bsr.w	Sonic_HurtStop
00013810 6100faf2	bsr.w	Sonic_LevelBound
00013814 6100f548	bsr.w	Sonic_RecordPosition
00013818 610001aa	bsr.w	Sonic_Animate
0001381c 61000420	bsr.w	Sonic_LoadGfx
00013820 4ef90000d604	jmp	(DisplaySprite).l
00013826 3038f72e	move.w	(v_limitbtm2).w,d0
0001382a 064000e0	addi.w	#224,d0
0001382e b068000c	cmp.w	obY(a0),d0
00013832 65007864	blo.w	KillSonic
00013836 6100fd6c	bsr.w	Sonic_Floor
0001383a 082800010022	btst	#1,obStatus(a0)
00013840 661e	bne.s	.continuehurt
00013842 7000	moveq	#0,d0
00013844 31400012	move.w	d0,obVelY(a0)
00013848 31400010	move.w	d0,obVelX(a0)
0001384c 31400014	move.w	d0,obInertia(a0)
00013850 117c0000001c	move.b	#id_Walk,obAnim(a0)
00013856 55280024	subq.b	#2,obRoutine(a0)
0001385a 317c00780030	move.w	#120,flashtime(a0)
00013860 4e75	rts	
00013862 6100001a	bsr.w	Sonic_HandleDeath
00013866 4eb90000d5b2	jsr	(ObjectFall).l
0001386c 6100f4f0	bsr.w	Sonic_RecordPosition
00013870 61000152	bsr.w	Sonic_Animate
00013874 610003c8	bsr.w	Sonic_LoadGfx
00013878 4ef90000d604	jmp	(DisplaySprite).l
0001387e 3038f72e	move.w	(v_limitbtm2).w,d0
00013882 06400100	addi.w	#$100,d0
00013886 b068000c	cmp.w	obY(a0),d0
0001388a 64000074	bhs.w	.return
0001388e 317cffc80012	move.w	#-$38,obVelY(a0)
00013894 54280024	addq.b	#2,obRoutine(a0)
00013898 4238fe1e	clr.b	(f_timecount).w
0001389c 5238fe1c	addq.b	#1,(f_lifecount).w
000138a0 5338fe12	subq.b	#1,(v_lives).w
000138a4 662e	bne.s	.extraLivesRemaining
000138a6 317c0000003a	move.w	#0,restartime(a0)
000138ac 11fc0039d080	move.b	#id_GameOverCard,(v_gameovertext1).w
000138b2 11fc0039d0c0	move.b	#id_GameOverCard,(v_gameovertext2).w
000138b8 11fc0001d0da	move.b	#1,(v_gameovertext2+obFrame).w
000138be 4238fe1a	clr.b	(f_timeover).w
000138c2 303c008f	move.w	#bgm_GameOver,d0
000138c6 4eb900001396	jsr	(QueueSound1).l
000138cc 7003	moveq	#plcid_GameOver,d0
000138ce 4ef900001580	jmp	(AddPLC).l
000138d4 317c003c003a	move.w	#60,restartime(a0)
000138da 4a38fe1a	tst.b	(f_timeover).w
000138de 6720	beq.s	.return
000138e0 317c0000003a	move.w	#0,restartime(a0)
000138e6 11fc0039d080	move.b	#id_GameOverCard,(v_gameovertext1).w
000138ec 11fc0039d0c0	move.b	#id_GameOverCard,(v_gameovertext2).w
000138f2 11fc0002d09a	move.b	#2,(v_gameovertext1+obFrame).w
000138f8 11fc0003d0da	move.b	#3,(v_gameovertext2+obFrame).w
000138fe 60c2	bra.s	.gameOverBgmAndPatterns
00013900 4e75	rts	
00013902 4a68003a	tst.w	restartime(a0)
00013906 670c	beq.s	.return
00013908 5368003a	subq.w	#1,restartime(a0)
0001390c 6606	bne.s	.return
0001390e 31fc0001fe02	move.w	#1,(f_restart).w
00013914 4e75	rts	
00013916 0c380003fe10	cmpi.b	#id_SLZ,(v_zone).w
0001391c 6708	beq.s	.isstarlight
0001391e 4a38fe10	tst.b	(v_zone).w
00013922 6600009e	bne.w	.return
00013926 3028000c	move.w	obY(a0),d0
0001392a e248	lsr.w	#1,d0
0001392c 02400380	andi.w	#$380,d0
00013930 12280008	move.b	obX(a0),d1
00013934 0241007f	andi.w	#$7F,d1
00013938 d041	add.w	d1,d0
0001393a 43f8a400	lea	(v_lvllayout_fg).w,a1
0001393e 12310000	move.b	(a1,d0.w),d1
00013942 b238f7ae	cmp.b	(v_256roll1).w,d1
00013946 6700fa64	beq.w	Sonic_ChkRoll
0001394a b238f7af	cmp.b	(v_256roll2).w,d1
0001394e 6700fa5c	beq.w	Sonic_ChkRoll
00013952 b238f7ac	cmp.b	(v_256loop1).w,d1
00013956 671e	beq.s	.chkifleft
00013958 b238f7ad	cmp.b	(v_256loop2).w,d1
0001395c 6708	beq.s	.chkifinair
0001395e 08a800060001	bclr	#6,obRender(a0)
00013964 4e75	rts	
00013966 082800010022	btst	#1,obStatus(a0)
0001396c 6708	beq.s	.chkifleft
0001396e 08a800060001	bclr	#6,obRender(a0)
00013974 4e75	rts	
00013976 34280008	move.w	obX(a0),d2
0001397a 0c02002c	cmpi.b	#44,d2
0001397e 6408	bhs.s	.chkifright
00013980 08a800060001	bclr	#6,obRender(a0)
00013986 4e75	rts	
00013988 0c0200e0	cmpi.b	#224,d2
0001398c 6508	blo.s	.chkangle1
0001398e 08e800060001	bset	#6,obRender(a0)
00013994 4e75	rts	
00013996 082800060001	btst	#6,obRender(a0)
0001399c 6614	bne.s	.chkangle2
0001399e 12280026	move.b	obAngle(a0),d1
000139a2 671e	beq.s	.return
000139a4 0c010080	cmpi.b	#$80,d1
000139a8 6218	bhi.s	.return
000139aa 08e800060001	bset	#6,obRender(a0)
000139b0 4e75	rts	
000139b2 12280026	move.b	obAngle(a0),d1
000139b6 0c010080	cmpi.b	#$80,d1
000139ba 6306	bls.s	.return
000139bc 08a800060001	bclr	#6,obRender(a0)
000139c2 4e75	rts	
000139c4 43f900013b48	lea	(Ani_Sonic).l,a1
000139ca 7000	moveq	#0,d0
000139cc 1028001c	move.b	obAnim(a0),d0
000139d0 b028001d	cmp.b	obPrevAni(a0),d0
000139d4 6710	beq.s	.do
000139d6 1140001d	move.b	d0,obPrevAni(a0)
000139da 117c0000001b	move.b	#0,obAniFrame(a0)
000139e0 117c0000001e	move.b	#0,obTimeFrame(a0)
000139e6 d040	add.w	d0,d0
000139e8 d2f10000	adda.w	(a1,d0.w),a1
000139ec 1011	move.b	(a1),d0
000139ee 6b62	bmi.s	.walkrunroll
000139f0 12280022	move.b	obStatus(a0),d1
000139f4 02010001	andi.b	#1,d1
000139f8 022800fc0001	andi.b	#$FC,obRender(a0)
000139fe 83280001	or.b	d1,obRender(a0)
00013a02 5328001e	subq.b	#1,obTimeFrame(a0)
00013a06 6a18	bpl.s	.delay
00013a08 1140001e	move.b	d0,obTimeFrame(a0)
00013a0c 7200	moveq	#0,d1
00013a0e 1228001b	move.b	obAniFrame(a0),d1
00013a12 10311001	move.b	1(a1,d1.w),d0
00013a16 6b0a	bmi.s	.end_FF
00013a18 1140001a	move.b	d0,obFrame(a0)
00013a1c 5228001b	addq.b	#1,obAniFrame(a0)
00013a20 4e75	rts	
00013a22 5200	addq.b	#1,d0
00013a24 660c	bne.s	.end_FE
00013a26 117c0000001b	move.b	#0,obAniFrame(a0)
00013a2c 10290001	move.b	1(a1),d0
00013a30 60e6	bra.s	.next
00013a32 5200	addq.b	#1,d0
00013a34 6610	bne.s	.end_FD
00013a36 10311002	move.b	2(a1,d1.w),d0
00013a3a 9128001b	sub.b	d0,obAniFrame(a0)
00013a3e 9200	sub.b	d0,d1
00013a40 10311001	move.b	1(a1,d1.w),d0
00013a44 60d2	bra.s	.next
00013a46 5200	addq.b	#1,d0
00013a48 6606	bne.s	.end
00013a4a 11711002001c	move.b	2(a1,d1.w),obAnim(a0)
00013a50 4e75	rts	
00013a52 5328001e	subq.b	#1,obTimeFrame(a0)
00013a56 6ac8	bpl.s	.delay
00013a58 5200	addq.b	#1,d0
00013a5a 66000076	bne.w	.rolljump
00013a5e 7200	moveq	#0,d1
00013a60 10280026	move.b	obAngle(a0),d0
00013a64 14280022	move.b	obStatus(a0),d2
00013a68 02020001	andi.b	#1,d2
00013a6c 6602	bne.s	.flip
00013a6e 4600	not.b	d0
00013a70 06000010	addi.b	#$10,d0
00013a74 6a02	bpl.s	.noinvert
00013a76 7203	moveq	#3,d1
00013a78 022800fc0001	andi.b	#$FC,obRender(a0)
00013a7e b302	eor.b	d1,d2
00013a80 85280001	or.b	d2,obRender(a0)
00013a84 082800050022	btst	#5,obStatus(a0)
00013a8a 6600008a	bne.w	.push
00013a8e e808	lsr.b	#4,d0
00013a90 02000006	andi.b	#6,d0
00013a94 34280014	move.w	obInertia(a0),d2
00013a98 6a02	bpl.s	.nomodspeed
00013a9a 4442	neg.w	d2
00013a9c 43f900013b8e	lea	(SonAni_Run).l,a1
00013aa2 0c420600	cmpi.w	#$600,d2
00013aa6 640c	bhs.s	.running
00013aa8 43f900013b86	lea	(SonAni_Walk).l,a1
00013aae 1200	move.b	d0,d1
00013ab0 e209	lsr.b	#1,d1
00013ab2 d001	add.b	d1,d0
00013ab4 d000	add.b	d0,d0
00013ab6 1600	move.b	d0,d3
00013ab8 4442	neg.w	d2
00013aba 06420800	addi.w	#$800,d2
00013abe 6a02	bpl.s	.belowmax
00013ac0 7400	moveq	#0,d2
00013ac2 e04a	lsr.w	#8,d2
00013ac4 1142001e	move.b	d2,obTimeFrame(a0)
00013ac8 6100ff42	bsr.w	.loadframe
00013acc d728001a	add.b	d3,obFrame(a0)
00013ad0 4e75	rts	
00013ad2 5200	addq.b	#1,d0
00013ad4 6640	bne.s	.push
00013ad6 34280014	move.w	obInertia(a0),d2
00013ada 6a02	bpl.s	.nomodspeed2
00013adc 4442	neg.w	d2
00013ade 43f900013b9e	lea	(SonAni_Roll2).l,a1
00013ae4 0c420600	cmpi.w	#$600,d2
00013ae8 6406	bhs.s	.rollfast
00013aea 43f900013b96	lea	(SonAni_Roll).l,a1
00013af0 4442	neg.w	d2
00013af2 06420400	addi.w	#$400,d2
00013af6 6a02	bpl.s	.belowmax2
00013af8 7400	moveq	#0,d2
00013afa e04a	lsr.w	#8,d2
00013afc 1142001e	move.b	d2,obTimeFrame(a0)
00013b00 12280022	move.b	obStatus(a0),d1
00013b04 02010001	andi.b	#1,d1
00013b08 022800fc0001	andi.b	#$FC,obRender(a0)
00013b0e 83280001	or.b	d1,obRender(a0)
00013b12 6000fef8	bra.w	.loadframe
00013b16 34280014	move.w	obInertia(a0),d2
00013b1a 6b02	bmi.s	.negspeed
00013b1c 4442	neg.w	d2
00013b1e 06420800	addi.w	#$800,d2
00013b22 6a02	bpl.s	.belowmax3
00013b24 7400	moveq	#0,d2
00013b26 ec4a	lsr.w	#6,d2
00013b28 1142001e	move.b	d2,obTimeFrame(a0)
00013b2c 43f900013ba6	lea	(SonAni_Push).l,a1
00013b32 12280022	move.b	obStatus(a0),d1
00013b36 02010001	andi.b	#1,d1
00013b3a 022800fc0001	andi.b	#$FC,obRender(a0)
00013b40 83280001	or.b	d1,obRender(a0)
00013b44 6000fec6	bra.w	.loadframe
00013c3e 7000	moveq	#0,d0
00013c40 1028001a	move.b	obFrame(a0),d0
00013c44 b038f766	cmp.b	(v_sonframenum).w,d0
00013c48 674c	beq.s	.nochange
00013c4a 11c0f766	move.b	d0,(v_sonframenum).w
00013c4e 45f9000217fe	lea	(SonicDynPLC).l,a2
00013c54 d040	add.w	d0,d0
00013c56 d4f20000	adda.w	(a2,d0.w),a2
00013c5a 7200	moveq	#0,d1
00013c5c 121a	move.b	(a2)+,d1
00013c5e 5301	subq.b	#1,d1
00013c60 6b34	bmi.s	.nochange
00013c62 47f8c800	lea	(v_sgfx_buffer).w,a3
00013c66 11fc0001f767	move.b	#1,(f_sonframechg).w
00013c6c 7400	moveq	#0,d2
00013c6e 141a	move.b	(a2)+,d2
00013c70 3002	move.w	d2,d0
00013c72 e808	lsr.b	#4,d0
00013c74 e14a	lsl.w	#8,d2
00013c76 141a	move.b	(a2)+,d2
00013c78 eb4a	lsl.w	#5,d2
00013c7a 43f900021afe	lea	(Art_Sonic).l,a1
00013c80 d3c2	adda.l	d2,a1
00013c82 4cd9707c	movem.l	(a1)+,d2-d6/a4-a6
00013c86 48d3707c	movem.l	d2-d6/a4-a6,(a3)
00013c8a 47eb0020	lea	tile_size(a3),a3
00013c8e 51c8fff2	dbf	d0,.loadtile
00013c92 51c9ffd8	dbf	d1,.readentry
00013c96 4e75	rts	
00013c98 7000	moveq	#0,d0
00013c9a 10280024	move.b	obRoutine(a0),d0
00013c9e 323b0006	move.w	Drown_Index(pc,d0.w),d1
00013ca2 4efb1002	jmp	Drown_Index(pc,d1.w)
00013cb8 54280024	addq.b	#2,obRoutine(a0)
00013cbc 217c000129cc0004	move.l	#Map_Bub,obMap(a0)
00013cc4 317c83480002	move.w	#ArtTile_LZ_Bubbles|Tile_Prio,obGfx(a0)
00013cca 117c00840001	move.b	#$84,obRender(a0)
00013cd0 117c00100019	move.b	#$10,obActWid(a0)
00013cd6 117c00010018	move.b	#1,obPriority(a0)
00013cdc 10280028	move.b	obSubtype(a0),d0
00013ce0 6a1e	bpl.s	.smallbubble
00013ce2 50280024	addq.b	#8,obRoutine(a0)
00013ce6 217c000141500004	move.l	#Map_Drown,obMap(a0)
00013cee 317c04400002	move.w	#ArtTile_LZ_Sonic_Drowning,obGfx(a0)
00013cf4 0240007f	andi.w	#$7F,d0
00013cf8 11400033	move.b	d0,objoff_33(a0)
00013cfc 6000019e	bra.w	Drown_Countdown
00013d00 1140001c	move.b	d0,obAnim(a0)
00013d04 316800080030	move.w	obX(a0),drown_origX(a0)
00013d0a 317cff780012	move.w	#-$88,obVelY(a0)
00013d10 43f9000140b8	lea	(Ani_Drown).l,a1
00013d16 4eb90000a718	jsr	(AnimateSprite).l
00013d1c 3038f646	move.w	(v_waterpos1).w,d0
00013d20 b068000c	cmp.w	obY(a0),d0
00013d24 6514	blo.s	.wobble
00013d26 117c00060024	move.b	#6,obRoutine(a0)
00013d2c 5e28001c	addq.b	#7,obAnim(a0)
00013d30 0c28000d001c	cmpi.b	#$D,obAnim(a0)
00013d36 6746	beq.s	Drown_Display
00013d38 6044	bra.s	Drown_Display
00013d3a 4a38f7c7	tst.b	(f_wtunnelmode).w
00013d3e 6704	beq.s	.notunnel
00013d40 58680030	addq.w	#4,drown_origX(a0)
00013d44 10280026	move.b	obAngle(a0),d0
00013d48 52280026	addq.b	#1,obAngle(a0)
00013d4c 0240007f	andi.w	#$7F,d0
00013d50 43f900013e1c	lea	(Drown_WobbleData).l,a1
00013d56 10310000	move.b	(a1,d0.w),d0
00013d5a 4880	ext.w	d0
00013d5c d0680030	add.w	drown_origX(a0),d0
00013d60 31400008	move.w	d0,obX(a0)
00013d64 616a	bsr.s	Drown_ShowNumber
00013d66 4eb90000d5de	jsr	(SpeedToPos).l
00013d6c 4a280001	tst.b	obRender(a0)
00013d70 6a06	bpl.s	.delete
00013d72 4ef90000d604	jmp	(DisplaySprite).l
00013d78 4ef90000d640	jmp	(DeleteObject).l
00013d7e 6150	bsr.s	Drown_ShowNumber
00013d80 43f9000140b8	lea	(Ani_Drown).l,a1
00013d86 4eb90000a718	jsr	(AnimateSprite).l
00013d8c 4ef90000d604	jmp	(DisplaySprite).l
00013d92 4ef90000d640	jmp	(DeleteObject).l
00013d98 0c78000cfe14	cmpi.w	#$C,(v_air).w
00013d9e 622a	bhi.s	Drown_AirLeft_Delete
00013da0 53680038	subq.w	#1,drown_time(a0)
00013da4 660c	bne.s	.display
00013da6 117c000e0024	move.b	#6+8,obRoutine(a0)
00013dac 5e28001c	addq.b	#7,obAnim(a0)
00013db0 60cc	bra.s	Drown_Display
00013db2 43f9000140b8	lea	(Ani_Drown).l,a1
00013db8 4eb90000a718	jsr	(AnimateSprite).l
00013dbe 4a280001	tst.b	obRender(a0)
00013dc2 6a06	bpl.s	Drown_AirLeft_Delete
00013dc4 4ef90000d604	jmp	(DisplaySprite).l
00013dca 4ef90000d640	jmp	(DeleteObject).l
00013dd0 4a680038	tst.w	drown_time(a0)
00013dd4 6744	beq.s	.nonumber
00013dd6 53680038	subq.w	#1,drown_time(a0)
00013dda 663e	bne.s	.nonumber
00013ddc 0c280007001c	cmpi.b	#7,obAnim(a0)
00013de2 6436	bhs.s	.nonumber
00013de4 317c000f0038	move.w	#15,drown_time(a0)
00013dea 42680012	clr.w	obVelY(a0)
00013dee 117c00800001	move.b	#$80,obRender(a0)
00013df4 30280008	move.w	obX(a0),d0
00013df8 9078f700	sub.w	(v_screenposx).w,d0
00013dfc 06400080	addi.w	#$80,d0
00013e00 31400008	move.w	d0,obX(a0)
00013e04 3028000c	move.w	obY(a0),d0
00013e08 9078f704	sub.w	(v_screenposy).w,d0
00013e0c 06400080	addi.w	#$80,d0
00013e10 3140000a	move.w	d0,obScreenY(a0)
00013e14 117c000c0024	move.b	#$C,obRoutine(a0)
00013e1a 4e75	rts	
00013e9c 4a68002c	tst.w	objoff_2C(a0)
00013ea0 660000e4	bne.w	.loc_13F86
00013ea4 0c380006d024	cmpi.b	#6,(v_player+obRoutine).w
00013eaa 640001e0	bhs.w	.nocountdown
00013eae 08380006d022	btst	#6,(v_player+obStatus).w
00013eb4 670001d6	beq.w	.nocountdown
00013eb8 53680038	subq.w	#1,drown_time(a0)
00013ebc 6a0000ee	bpl.w	.nochange
00013ec0 317c003b0038	move.w	#59,drown_time(a0)
00013ec6 317c00010036	move.w	#1,objoff_36(a0)
00013ecc 4eb9000029b4	jsr	(RandomNumber).l
00013ed2 02400001	andi.w	#1,d0
00013ed6 11400034	move.b	d0,objoff_34(a0)
00013eda 3038fe14	move.w	(v_air).w,d0
00013ede 0c400019	cmpi.w	#25,d0
00013ee2 6732	beq.s	.warnsound
00013ee4 0c400014	cmpi.w	#20,d0
00013ee8 672c	beq.s	.warnsound
00013eea 0c40000f	cmpi.w	#15,d0
00013eee 6726	beq.s	.warnsound
00013ef0 0c40000c	cmpi.w	#12,d0
00013ef4 622a	bhi.s	.reduceair
00013ef6 660a	bne.s	.skipmusic
00013ef8 303c0092	move.w	#bgm_Drowning,d0
00013efc 4eb900001396	jsr	(QueueSound1).l
00013f02 53280032	subq.b	#1,objoff_32(a0)
00013f06 6a18	bpl.s	.reduceair
00013f08 116800330032	move.b	objoff_33(a0),objoff_32(a0)
00013f0e 08e800070036	bset	#7,objoff_36(a0)
00013f14 600a	bra.s	.reduceair
00013f16 303c00c2	move.w	#sfx_Warning,d0
00013f1a 4eb90000139c	jsr	(QueueSound2).l
00013f20 5378fe14	subq.w	#1,(v_air).w
00013f24 64000084	bcc.w	.gotomakenum
00013f28 61000164	bsr.w	ResumeMusic
00013f2c 11fc0081f7c8	move.b	#$81,(f_playerctrl).w
00013f32 303c00b2	move.w	#sfx_Drown,d0
00013f36 4eb90000139c	jsr	(QueueSound2).l
00013f3c 117c000a0034	move.b	#$A,objoff_34(a0)
00013f42 317c00010036	move.w	#1,objoff_36(a0)
00013f48 317c0078002c	move.w	#$78,objoff_2C(a0)
00013f4e 2f08	move.l	a0,-(sp)
00013f50 41f8d000	lea	(v_player).w,a0
00013f54 6100f84a	bsr.w	Sonic_ResetOnFloor
00013f58 117c0017001c	move.b	#id_Drown,obAnim(a0)
00013f5e 08e800010022	bset	#1,obStatus(a0)
00013f64 08e800070002	bset	#7,obGfx(a0)
00013f6a 317c00000012	move.w	#0,obVelY(a0)
00013f70 317c00000010	move.w	#0,obVelX(a0)
00013f76 317c00000014	move.w	#0,obInertia(a0)
00013f7c 11fc0001f744	move.b	#1,(f_nobgscroll).w
00013f82 205f	movea.l	(sp)+,a0
00013f84 4e75	rts	
00013f86 5368002c	subq.w	#1,objoff_2C(a0)
00013f8a 6608	bne.s	.loc_13F94
00013f8c 11fc0006d024	move.b	#6,(v_player+obRoutine).w
00013f92 4e75	rts	
00013f94 2f08	move.l	a0,-(sp)
00013f96 41f8d000	lea	(v_player).w,a0
00013f9a 4eb90000d5de	jsr	(SpeedToPos).l
00013fa0 066800100012	addi.w	#$10,obVelY(a0)
00013fa6 205f	movea.l	(sp)+,a0
00013fa8 6002	bra.s	.nochange
00013faa 6010	bra.s	.makenum
00013fac 4a680036	tst.w	objoff_36(a0)
00013fb0 670000da	beq.w	.nocountdown
00013fb4 5368003a	subq.w	#1,objoff_3A(a0)
00013fb8 6a0000d2	bpl.w	.nocountdown
00013fbc 4eb9000029b4	jsr	(RandomNumber).l
00013fc2 0240000f	andi.w	#$F,d0
00013fc6 3140003a	move.w	d0,objoff_3A(a0)
00013fca 4eb90000da8c	jsr	(FindFreeObj).l
00013fd0 660000ba	bne.w	.nocountdown
00013fda 3378d0080008	move.w	(v_player+obX).w,obX(a1)
00013fe0 7006	moveq	#6,d0
00013fe2 08380000d022	btst	#0,(v_player+obStatus).w
00013fe8 6708	beq.s	.noflip
00013fea 4440	neg.w	d0
00013fec 137c00400026	move.b	#$40,obAngle(a1)
00013ff2 d1690008	add.w	d0,obX(a1)
00013ff6 3378d00c000c	move.w	(v_player+obY).w,obY(a1)
00013ffc 137c00060028	move.b	#6,obSubtype(a1)
00014002 4a68002c	tst.w	objoff_2C(a0)
00014006 67000036	beq.w	.loc_1403E
0001400a 02680007003a	andi.w	#7,objoff_3A(a0)
00014010 06680000003a	addi.w	#0,objoff_3A(a0)
00014016 3038d00c	move.w	(v_player+obY).w,d0
0001401a 0440000c	subi.w	#$C,d0
0001401e 3340000c	move.w	d0,obY(a1)
00014022 4eb9000029b4	jsr	(RandomNumber).l
00014028 13400026	move.b	d0,obAngle(a1)
0001402c 3038fe04	move.w	(v_framecount).w,d0
00014030 02000003	andi.b	#3,d0
00014034 664c	bne.s	.loc_14082
00014036 137c000e0028	move.b	#$E,obSubtype(a1)
0001403c 6044	bra.s	.loc_14082
0001403e 082800070036	btst	#7,objoff_36(a0)
00014044 673c	beq.s	.loc_14082
00014046 3438fe14	move.w	(v_air).w,d2
0001404a e24a	lsr.w	#1,d2
0001404c 4eb9000029b4	jsr	(RandomNumber).l
00014052 02400003	andi.w	#3,d0
00014056 6612	bne.s	.loc_1406A
00014058 08e800060036	bset	#6,objoff_36(a0)
0001405e 6622	bne.s	.loc_14082
00014060 13420028	move.b	d2,obSubtype(a1)
00014064 337c001c0038	move.w	#$1C,drown_time(a1)
0001406a 4a280034	tst.b	objoff_34(a0)
0001406e 6612	bne.s	.loc_14082
00014070 08e800060036	bset	#6,objoff_36(a0)
00014076 660a	bne.s	.loc_14082
00014078 13420028	move.b	d2,obSubtype(a1)
0001407c 337c001c0038	move.w	#$1C,drown_time(a1)
00014082 53280034	subq.b	#1,objoff_34(a0)
00014086 6a04	bpl.s	.nocountdown
00014088 42680036	clr.w	objoff_36(a0)
0001408c 4e75	rts	
0001408e 0c78000cfe14	cmpi.w	#12,(v_air).w
00014094 6216	bhi.s	.over12
00014096 303c0082	move.w	#bgm_LZ,d0
0001409a 0c780103fe10	cmpi.w	#id_LZ_act4,(v_zone).w
000140a0 6604	bne.s	.notsbz
000140a2 303c0086	move.w	#bgm_SBZ,d0
000140a6 4eb900001396	jsr	(QueueSound1).l
000140ac 31fc001efe14	move.w	#30,(v_air).w
000140b2 4238d372	clr.b	(v_sonicbubbles+objoff_32).w
000140b6 4e75	rts	
00014158 7000	moveq	#0,d0
0001415a 10280024	move.b	obRoutine(a0),d0
0001415e 323b0006	move.w	Shi_Index(pc,d0.w),d1
00014162 4efb1002	jmp	Shi_Index(pc,d1.w)
0001416c 54280024	addq.b	#2,obRoutine(a0)
00014170 217c000143b20004	move.l	#Map_Shield,obMap(a0)
00014178 117c00040001	move.b	#4,obRender(a0)
0001417e 117c00010018	move.b	#1,obPriority(a0)
00014184 117c00100019	move.b	#$10,obActWid(a0)
0001418a 4a28001c	tst.b	obAnim(a0)
0001418e 6608	bne.s	.stars
00014190 317c05410002	move.w	#ArtTile_Shield,obGfx(a0)
00014196 4e75	rts	
00014198 54280024	addq.b	#2,obRoutine(a0)
0001419c 317c055c0002	move.w	#ArtTile_Invincibility,obGfx(a0)
000141a2 4e75	rts	
000141a4 4a38fe2d	tst.b	(v_invinc).w
000141a8 662a	bne.s	.remove
000141aa 4a38fe2c	tst.b	(v_shield).w
000141ae 6726	beq.s	.delete
000141b0 3178d0080008	move.w	(v_player+obX).w,obX(a0)
000141b6 3178d00c000c	move.w	(v_player+obY).w,obY(a0)
000141bc 1178d0220022	move.b	(v_player+obStatus).w,obStatus(a0)
000141c2 43f90001434c	lea	(Ani_Shield).l,a1
000141c8 4eb90000a718	jsr	(AnimateSprite).l
000141ce 4ef90000d604	jmp	(DisplaySprite).l
000141d4 4e75	rts	
000141d6 4ef90000d640	jmp	(DeleteObject).l
000141dc 4a38fe2d	tst.b	(v_invinc).w
000141e0 676c	beq.s	Shi_Start_Delete
000141e2 3038f7a8	move.w	(v_trackpos).w,d0
000141e6 1228001c	move.b	obAnim(a0),d1
000141ea 5301	subq.b	#1,d1
000141ec 6018	bra.s	.trail
000141ee e909	lsl.b	#4,d1
000141f0 5801	addq.b	#4,d1
000141f2 9001	sub.b	d1,d0
000141f4 12280030	move.b	objoff_30(a0),d1
000141f8 9001	sub.b	d1,d0
000141fa 5801	addq.b	#4,d1
000141fc 0201000f	andi.b	#$F,d1
00014200 11410030	move.b	d1,objoff_30(a0)
00014204 6020	bra.s	.b
00014206 e709	lsl.b	#3,d1
00014208 1401	move.b	d1,d2
0001420a d201	add.b	d1,d1
0001420c d202	add.b	d2,d1
0001420e 5801	addq.b	#4,d1
00014210 9001	sub.b	d1,d0
00014212 12280030	move.b	objoff_30(a0),d1
00014216 9001	sub.b	d1,d0
00014218 5801	addq.b	#4,d1
0001421a 0c010018	cmpi.b	#$18,d1
0001421e 6502	blo.s	.a
00014220 7200	moveq	#0,d1
00014222 11410030	move.b	d1,objoff_30(a0)
00014226 43f8cb00	lea	(v_tracksonic).w,a1
0001422a 43f10000	lea	(a1,d0.w),a1
0001422e 31590008	move.w	(a1)+,obX(a0)
00014232 3159000c	move.w	(a1)+,obY(a0)
00014236 1178d0220022	move.b	(v_player+obStatus).w,obStatus(a0)
0001423c 43f90001434c	lea	(Ani_Shield).l,a1
00014242 4eb90000a718	jsr	(AnimateSprite).l
00014248 4ef90000d604	jmp	(DisplaySprite).l
0001424e 4ef90000d640	jmp	(DeleteObject).l
00014254 7000	moveq	#0,d0
00014256 10280024	move.b	obRoutine(a0),d0
0001425a 323b0006	move.w	Van_Index(pc,d0.w),d1
0001425e 4efb1002	jmp	Van_Index(pc,d1.w)
00014268 4ab8f680	tst.l	(v_plc_buffer).w
0001426c 6702	beq.s	.isempty
0001426e 4e75	rts	
00014270 54280024	addq.b	#2,obRoutine(a0)
00014274 217c0001446c0004	move.l	#Map_Vanish,obMap(a0)
0001427c 117c00040001	move.b	#4,obRender(a0)
00014282 117c00010018	move.b	#1,obPriority(a0)
00014288 117c00380019	move.b	#$38,obActWid(a0)
0001428e 317c05410002	move.w	#ArtTile_Warp,obGfx(a0)
00014294 317c00780030	move.w	#120,van_time(a0)
0001429a 3178d0080008	move.w	(v_player+obX).w,obX(a0)
000142a0 3178d00c000c	move.w	(v_player+obY).w,obY(a0)
000142a6 1178d0220022	move.b	(v_player+obStatus).w,obStatus(a0)
000142ac 43f900014456	lea	(Ani_Vanish).l,a1
000142b2 4eb90000a718	jsr	(AnimateSprite).l
000142b8 0c280002001a	cmpi.b	#2,obFrame(a0)
000142be 6616	bne.s	.display
000142c0 4a38d000	tst.b	(v_player).w
000142c4 6710	beq.s	.display
000142c6 11fc0000d000	move.b	#0,(v_player).w
000142cc 303c00a8	move.w	#sfx_SSGoal,d0
000142d0 4eb90000139c	jsr	(QueueSound2).l
000142d6 4ef90000d604	jmp	(DisplaySprite).l
000142dc 53680030	subq.w	#1,van_time(a0)
000142e0 660c	bne.s	.wait
000142e2 11fc0001d000	move.b	#id_SonicPlayer,(v_player).w
000142e8 4ef90000d640	jmp	(DeleteObject).l
000142ee 4e75	rts	
000142f0 7000	moveq	#0,d0
000142f2 10280024	move.b	obRoutine(a0),d0
000142f6 323b0006	move.w	Spla_Index(pc,d0.w),d1
000142fa 4efb1002	jmp	Spla_Index(pc,d1.w)
00014304 54280024	addq.b	#2,obRoutine(a0)
00014308 217c000145cc0004	move.l	#Map_Splash,obMap(a0)
00014310 002800040001	ori.b	#4,obRender(a0)
00014316 117c00010018	move.b	#1,obPriority(a0)
0001431c 117c00100019	move.b	#$10,obActWid(a0)
00014322 317c42590002	move.w	#ArtTile_LZ_Splash|Tile_Pal3,obGfx(a0)
00014328 3178d0080008	move.w	(v_player+obX).w,obX(a0)
0001432e 3178f646000c	move.w	(v_waterpos1).w,obY(a0)
00014334 43f9000145c4	lea	(Ani_Splash).l,a1
0001433a 4eb90000a718	jsr	(AnimateSprite).l
00014340 4ef90000d604	jmp	(DisplaySprite).l
00014346 4ef90000d640	jmp	(DeleteObject).l
000145ee 082800030022	btst	#3,obStatus(a0)
000145f4 670c	beq.s	loc_14602
000145f6 7000	moveq	#0,d0
000145f8 11c0f768	move.b	d0,(v_anglebuffer).w
000145fc 11c0f76a	move.b	d0,(v_anglebuffer2).w
00014600 4e75	rts	
00014602 7003	moveq	#3,d0
00014604 11c0f768	move.b	d0,(v_anglebuffer).w
00014608 11c0f76a	move.b	d0,(v_anglebuffer2).w
0001460c 10280026	move.b	obAngle(a0),d0
00014610 06000020	addi.b	#$20,d0
00014614 6a0e	bpl.s	loc_14624
00014616 10280026	move.b	obAngle(a0),d0
0001461a 6a02	bpl.s	loc_1461E
0001461c 5300	subq.b	#1,d0
0001461e 06000020	addi.b	#$20,d0
00014622 600c	bra.s	loc_14630
00014624 10280026	move.b	obAngle(a0),d0
00014628 6a02	bpl.s	loc_1462C
0001462a 5200	addq.b	#1,d0
0001462c 0600001f	addi.b	#$1F,d0
00014630 020000c0	andi.b	#$C0,d0
00014634 0c000040	cmpi.b	#$40,d0
00014638 67000280	beq.w	Sonic_WalkVertL
0001463c 0c000080	cmpi.b	#$80,d0
00014640 670001d6	beq.w	Sonic_WalkCeiling
00014644 0c0000c0	cmpi.b	#$C0,d0
00014648 67000132	beq.w	Sonic_WalkVertR
0001464c 3428000c	move.w	obY(a0),d2
00014650 36280008	move.w	obX(a0),d3
00014654 7000	moveq	#0,d0
00014656 10280016	move.b	obHeight(a0),d0
0001465a 4880	ext.w	d0
0001465c d440	add.w	d0,d2
0001465e 10280017	move.b	obWidth(a0),d0
00014662 4880	ext.w	d0
00014664 d640	add.w	d0,d3
00014666 49f8f768	lea	(v_anglebuffer).w,a4
0001466a 367c0010	movea.w	#$10,a3
0001466e 3c3c0000	move.w	#0,d6
00014672 7a0d	moveq	#$D,d5
00014674 61000358	bsr.w	FindFloor
00014678 3f01	move.w	d1,-(sp)
0001467a 3428000c	move.w	obY(a0),d2
0001467e 36280008	move.w	obX(a0),d3
00014682 7000	moveq	#0,d0
00014684 10280016	move.b	obHeight(a0),d0
00014688 4880	ext.w	d0
0001468a d440	add.w	d0,d2
0001468c 10280017	move.b	obWidth(a0),d0
00014690 4880	ext.w	d0
00014692 4440	neg.w	d0
00014694 d640	add.w	d0,d3
00014696 49f8f76a	lea	(v_anglebuffer2).w,a4
0001469a 367c0010	movea.w	#$10,a3
0001469e 3c3c0000	move.w	#0,d6
000146a2 7a0d	moveq	#$D,d5
000146a4 61000328	bsr.w	FindFloor
000146a8 301f	move.w	(sp)+,d0
000146aa 610000a4	bsr.w	Sonic_Angle
000146ae 4a41	tst.w	d1
000146b0 670c	beq.s	locret_146BE
000146b2 6a0c	bpl.s	loc_146C0
000146b4 0c41fff2	cmpi.w	#-$E,d1
000146b8 6d2c	blt.s	locret_146E6
000146ba d368000c	add.w	d1,obY(a0)
000146be 4e75	rts	
000146c0 0c41000e	cmpi.w	#$E,d1
000146c4 6e06	bgt.s	loc_146CC
000146c6 d368000c	add.w	d1,obY(a0)
000146ca 4e75	rts	
000146cc 4a280038	tst.b	sticktoconvex(a0)
000146d0 66f4	bne.s	loc_146C6
000146d2 08e800010022	bset	#1,obStatus(a0)
000146d8 08a800050022	bclr	#5,obStatus(a0)
000146de 117c0001001d	move.b	#id_Run,obPrevAni(a0)
000146e4 4e75	rts	
000146e6 4e75	rts	
000146e8 24280008	move.l	obX(a0),d2
000146ec 30280010	move.w	obVelX(a0),d0
000146f0 48c0	ext.l	d0
000146f2 e180	asl.l	#8,d0
000146f4 9480	sub.l	d0,d2
000146f6 21420008	move.l	d2,obX(a0)
000146fa 303c0038	move.w	#$38,d0
000146fe 48c0	ext.l	d0
00014700 e180	asl.l	#8,d0
00014702 9680	sub.l	d0,d3
00014704 2143000c	move.l	d3,obY(a0)
00014708 4e75	rts	
0001470a 4e75	rts	
0001470c 2628000c	move.l	obY(a0),d3
00014710 30280012	move.w	obVelY(a0),d0
00014714 04400038	subi.w	#$38,d0
00014718 31400012	move.w	d0,obVelY(a0)
0001471c 48c0	ext.l	d0
0001471e e180	asl.l	#8,d0
00014720 9680	sub.l	d0,d3
00014722 2143000c	move.l	d3,obY(a0)
00014726 4e75	rts	
00014728 4e75	rts	
0001472a 24280008	move.l	obX(a0),d2
0001472e 2628000c	move.l	obY(a0),d3
00014732 30280010	move.w	obVelX(a0),d0
00014736 48c0	ext.l	d0
00014738 e180	asl.l	#8,d0
0001473a 9480	sub.l	d0,d2
0001473c 30280012	move.w	obVelY(a0),d0
00014740 48c0	ext.l	d0
00014742 e180	asl.l	#8,d0
00014744 9680	sub.l	d0,d3
00014746 21420008	move.l	d2,obX(a0)
0001474a 2143000c	move.l	d3,obY(a0)
0001474e 4e75	rts	
00014750 1438f76a	move.b	(v_anglebuffer2).w,d2
00014754 b240	cmp.w	d0,d1
00014756 6f06	ble.s	loc_1475E
00014758 1438f768	move.b	(v_anglebuffer).w,d2
0001475c 3200	move.w	d0,d1
0001475e 08020000	btst	#0,d2
00014762 6606	bne.s	loc_1476A
00014764 11420026	move.b	d2,obAngle(a0)
00014768 4e75	rts	
0001476a 14280026	move.b	obAngle(a0),d2
0001476e 06020020	addi.b	#$20,d2
00014772 020200c0	andi.b	#$C0,d2
00014776 11420026	move.b	d2,obAngle(a0)
0001477a 4e75	rts	
0001477c 3428000c	move.w	obY(a0),d2
00014780 36280008	move.w	obX(a0),d3
00014784 7000	moveq	#0,d0
00014786 10280017	move.b	obWidth(a0),d0
0001478a 4880	ext.w	d0
0001478c 4440	neg.w	d0
0001478e d440	add.w	d0,d2
00014790 10280016	move.b	obHeight(a0),d0
00014794 4880	ext.w	d0
00014796 d640	add.w	d0,d3
00014798 49f8f768	lea	(v_anglebuffer).w,a4
0001479c 367c0010	movea.w	#$10,a3
000147a0 3c3c0000	move.w	#0,d6
000147a4 7a0d	moveq	#$D,d5
000147a6 61000364	bsr.w	FindWall
000147aa 3f01	move.w	d1,-(sp)
000147ac 3428000c	move.w	obY(a0),d2
000147b0 36280008	move.w	obX(a0),d3
000147b4 7000	moveq	#0,d0
000147b6 10280017	move.b	obWidth(a0),d0
000147ba 4880	ext.w	d0
000147bc d440	add.w	d0,d2
000147be 10280016	move.b	obHeight(a0),d0
000147c2 4880	ext.w	d0
000147c4 d640	add.w	d0,d3
000147c6 49f8f76a	lea	(v_anglebuffer2).w,a4
000147ca 367c0010	movea.w	#$10,a3
000147ce 3c3c0000	move.w	#0,d6
000147d2 7a0d	moveq	#$D,d5
000147d4 61000336	bsr.w	FindWall
000147d8 301f	move.w	(sp)+,d0
000147da 6100ff74	bsr.w	Sonic_Angle
000147de 4a41	tst.w	d1
000147e0 670e	beq.s	locret_147F0
000147e2 6a0e	bpl.s	loc_147F2
000147e4 0c41fff2	cmpi.w	#-$E,d1
000147e8 6d00ff20	blt.w	locret_1470A
000147ec d3680008	add.w	d1,obX(a0)
000147f0 4e75	rts	
000147f2 0c41000e	cmpi.w	#$E,d1
000147f6 6e06	bgt.s	loc_147FE
000147f8 d3680008	add.w	d1,obX(a0)
000147fc 4e75	rts	
000147fe 4a280038	tst.b	sticktoconvex(a0)
00014802 66f4	bne.s	loc_147F8
00014804 08e800010022	bset	#1,obStatus(a0)
0001480a 08a800050022	bclr	#5,obStatus(a0)
00014810 117c0001001d	move.b	#id_Run,obPrevAni(a0)
00014816 4e75	rts	
00014818 3428000c	move.w	obY(a0),d2
0001481c 36280008	move.w	obX(a0),d3
00014820 7000	moveq	#0,d0
00014822 10280016	move.b	obHeight(a0),d0
00014826 4880	ext.w	d0
00014828 9440	sub.w	d0,d2
0001482a 0a42000f	eori.w	#$F,d2
0001482e 10280017	move.b	obWidth(a0),d0
00014832 4880	ext.w	d0
00014834 d640	add.w	d0,d3
00014836 49f8f768	lea	(v_anglebuffer).w,a4
0001483a 367cfff0	movea.w	#-$10,a3
0001483e 3c3c1000	move.w	#$1000,d6
00014842 7a0d	moveq	#$D,d5
00014844 61000188	bsr.w	FindFloor
00014848 3f01	move.w	d1,-(sp)
0001484a 3428000c	move.w	obY(a0),d2
0001484e 36280008	move.w	obX(a0),d3
00014852 7000	moveq	#0,d0
00014854 10280016	move.b	obHeight(a0),d0
00014858 4880	ext.w	d0
0001485a 9440	sub.w	d0,d2
0001485c 0a42000f	eori.w	#$F,d2
00014860 10280017	move.b	obWidth(a0),d0
00014864 4880	ext.w	d0
00014866 9640	sub.w	d0,d3
00014868 49f8f76a	lea	(v_anglebuffer2).w,a4
0001486c 367cfff0	movea.w	#-$10,a3
00014870 3c3c1000	move.w	#$1000,d6
00014874 7a0d	moveq	#$D,d5
00014876 61000156	bsr.w	FindFloor
0001487a 301f	move.w	(sp)+,d0
0001487c 6100fed2	bsr.w	Sonic_Angle
00014880 4a41	tst.w	d1
00014882 670e	beq.s	locret_14892
00014884 6a0e	bpl.s	loc_14894
00014886 0c41fff2	cmpi.w	#-$E,d1
0001488a 6d00fe5a	blt.w	locret_146E6
0001488e 9368000c	sub.w	d1,obY(a0)
00014892 4e75	rts	
00014894 0c41000e	cmpi.w	#$E,d1
00014898 6e06	bgt.s	loc_148A0
0001489a 9368000c	sub.w	d1,obY(a0)
0001489e 4e75	rts	
000148a0 4a280038	tst.b	sticktoconvex(a0)
000148a4 66f4	bne.s	loc_1489A
000148a6 08e800010022	bset	#1,obStatus(a0)
000148ac 08a800050022	bclr	#5,obStatus(a0)
000148b2 117c0001001d	move.b	#id_Run,obPrevAni(a0)
000148b8 4e75	rts	
000148ba 3428000c	move.w	obY(a0),d2
000148be 36280008	move.w	obX(a0),d3
000148c2 7000	moveq	#0,d0
000148c4 10280017	move.b	obWidth(a0),d0
000148c8 4880	ext.w	d0
000148ca 9440	sub.w	d0,d2
000148cc 10280016	move.b	obHeight(a0),d0
000148d0 4880	ext.w	d0
000148d2 9640	sub.w	d0,d3
000148d4 0a43000f	eori.w	#$F,d3
000148d8 49f8f768	lea	(v_anglebuffer).w,a4
000148dc 367cfff0	movea.w	#-$10,a3
000148e0 3c3c0800	move.w	#$800,d6
000148e4 7a0d	moveq	#$D,d5
000148e6 61000224	bsr.w	FindWall
000148ea 3f01	move.w	d1,-(sp)
000148ec 3428000c	move.w	obY(a0),d2
000148f0 36280008	move.w	obX(a0),d3
000148f4 7000	moveq	#0,d0
000148f6 10280017	move.b	obWidth(a0),d0
000148fa 4880	ext.w	d0
000148fc d440	add.w	d0,d2
000148fe 10280016	move.b	obHeight(a0),d0
00014902 4880	ext.w	d0
00014904 9640	sub.w	d0,d3
00014906 0a43000f	eori.w	#$F,d3
0001490a 49f8f76a	lea	(v_anglebuffer2).w,a4
0001490e 367cfff0	movea.w	#-$10,a3
00014912 3c3c0800	move.w	#$800,d6
00014916 7a0d	moveq	#$D,d5
00014918 610001f2	bsr.w	FindWall
0001491c 301f	move.w	(sp)+,d0
0001491e 6100fe30	bsr.w	Sonic_Angle
00014922 4a41	tst.w	d1
00014924 670e	beq.s	locret_14934
00014926 6a0e	bpl.s	loc_14936
00014928 0c41fff2	cmpi.w	#-$E,d1
0001492c 6d00fddc	blt.w	locret_1470A
00014930 93680008	sub.w	d1,obX(a0)
00014934 4e75	rts	
00014936 0c41000e	cmpi.w	#$E,d1
0001493a 6e06	bgt.s	loc_14942
0001493c 93680008	sub.w	d1,obX(a0)
00014940 4e75	rts	
00014942 4a280038	tst.b	sticktoconvex(a0)
00014946 66f4	bne.s	loc_1493C
00014948 08e800010022	bset	#1,obStatus(a0)
0001494e 08a800050022	bclr	#5,obStatus(a0)
00014954 117c0001001d	move.b	#id_Run,obPrevAni(a0)
0001495a 4e75	rts	
0001495c 3002	move.w	d2,d0
0001495e e248	lsr.w	#1,d0
00014960 02400380	andi.w	#$380,d0
00014964 3203	move.w	d3,d1
00014966 e049	lsr.w	#8,d1
00014968 0241007f	andi.w	#$7F,d1
0001496c d041	add.w	d1,d0
0001496e 72ff	moveq	#$FFFFFFFF,d1
00014970 43f8a400	lea	(v_lvllayout_fg).w,a1
00014974 12310000	move.b	(a1,d0.w),d1
00014978 671c	beq.s	.blanktile
0001497a 6b1e	bmi.s	.specialtile
0001497c 5301	subq.b	#1,d1
0001497e 4881	ext.w	d1
00014980 ee59	ror.w	#7,d1
00014982 3002	move.w	d2,d0
00014984 d040	add.w	d0,d0
00014986 024001e0	andi.w	#$1E0,d0
0001498a d240	add.w	d0,d1
0001498c 3003	move.w	d3,d0
0001498e e648	lsr.w	#3,d0
00014990 0240001e	andi.w	#$1E,d0
00014994 d240	add.w	d0,d1
00014996 2241	movea.l	d1,a1
00014998 4e75	rts	
0001499a 0241007f	andi.w	#$7F,d1
0001499e 082800060001	btst	#6,obRender(a0)
000149a4 670c	beq.s	.treatasnormal
000149a6 5241	addq.w	#1,d1
000149a8 0c410029	cmpi.w	#$29,d1
000149ac 6604	bne.s	.treatasnormal
000149ae 323c0051	move.w	#$51,d1
000149b2 5301	subq.b	#1,d1
000149b4 ee59	ror.w	#7,d1
000149b6 3002	move.w	d2,d0
000149b8 d040	add.w	d0,d0
000149ba 024001e0	andi.w	#$1E0,d0
000149be d240	add.w	d0,d1
000149c0 3003	move.w	d3,d0
000149c2 e648	lsr.w	#3,d0
000149c4 0240001e	andi.w	#$1E,d0
000149c8 d240	add.w	d0,d1
000149ca 2241	movea.l	d1,a1
000149cc 4e75	rts	
000149ce 618c	bsr.s	FindNearestTile
000149d0 3011	move.w	(a1),d0
000149d2 3800	move.w	d0,d4
000149d4 024007ff	andi.w	#$7FF,d0
000149d8 6704	beq.s	.isblank
000149da 0b04	btst	d5,d4
000149dc 660e	bne.s	.issolid
000149de d44b	add.w	a3,d2
000149e0 61000092	bsr.w	FindFloor2
000149e4 944b	sub.w	a3,d2
000149e6 06410010	addi.w	#$10,d1
000149ea 4e75	rts	
000149ec 2478f796	movea.l	(v_collindex).w,a2
000149f0 10320000	move.b	(a2,d0.w),d0
000149f4 024000ff	andi.w	#$FF,d0
000149f8 67e4	beq.s	.isblank
000149fa 45f900062900	lea	(AngleMap).l,a2
00014a00 18b20000	move.b	(a2,d0.w),(a4)
00014a04 e948	lsl.w	#4,d0
00014a06 3203	move.w	d3,d1
00014a08 0804000b	btst	#$B,d4
00014a0c 6704	beq.s	.noflip
00014a0e 4641	not.w	d1
00014a10 4414	neg.b	(a4)
00014a12 0804000c	btst	#$C,d4
00014a16 670a	beq.s	.noflip2
00014a18 06140040	addi.b	#$40,(a4)
00014a1c 4414	neg.b	(a4)
00014a1e 04140040	subi.b	#$40,(a4)
00014a22 0241000f	andi.w	#$F,d1
00014a26 d240	add.w	d0,d1
00014a28 45f900062a00	lea	(CollArray1).l,a2
00014a2e 10321000	move.b	(a2,d1.w),d0
00014a32 4880	ext.w	d0
00014a34 bd44	eor.w	d6,d4
00014a36 0804000c	btst	#$C,d4
00014a3a 6702	beq.s	.noflip3
00014a3c 4440	neg.w	d0
00014a3e 4a40	tst.w	d0
00014a40 679c	beq.s	.isblank
00014a42 6b16	bmi.s	.negfloor
00014a44 0c000010	cmpi.b	#$10,d0
00014a48 671c	beq.s	.maxfloor
00014a4a 3202	move.w	d2,d1
00014a4c 0241000f	andi.w	#$F,d1
00014a50 d041	add.w	d1,d0
00014a52 323c000f	move.w	#$F,d1
00014a56 9240	sub.w	d0,d1
00014a58 4e75	rts	
00014a5a 3202	move.w	d2,d1
00014a5c 0241000f	andi.w	#$F,d1
00014a60 d041	add.w	d1,d0
00014a62 6a00ff7a	bpl.w	.isblank
00014a66 944b	sub.w	a3,d2
00014a68 6100000a	bsr.w	FindFloor2
00014a6c d44b	add.w	a3,d2
00014a6e 04410010	subi.w	#$10,d1
00014a72 4e75	rts	
00014a74 6100fee6	bsr.w	FindNearestTile
00014a78 3011	move.w	(a1),d0
00014a7a 3800	move.w	d0,d4
00014a7c 024007ff	andi.w	#$7FF,d0
00014a80 6704	beq.s	.isblank2
00014a82 0b04	btst	d5,d4
00014a84 660e	bne.s	.issolid
00014a86 323c000f	move.w	#$F,d1
00014a8a 3002	move.w	d2,d0
00014a8c 0240000f	andi.w	#$F,d0
00014a90 9240	sub.w	d0,d1
00014a92 4e75	rts	
00014a94 2478f796	movea.l	(v_collindex).w,a2
00014a98 10320000	move.b	(a2,d0.w),d0
00014a9c 024000ff	andi.w	#$FF,d0
00014aa0 67e4	beq.s	.isblank2
00014aa2 45f900062900	lea	(AngleMap).l,a2
00014aa8 18b20000	move.b	(a2,d0.w),(a4)
00014aac e948	lsl.w	#4,d0
00014aae 3203	move.w	d3,d1
00014ab0 0804000b	btst	#$B,d4
00014ab4 6704	beq.s	.noflip
00014ab6 4641	not.w	d1
00014ab8 4414	neg.b	(a4)
00014aba 0804000c	btst	#$C,d4
00014abe 670a	beq.s	.noflip2
00014ac0 06140040	addi.b	#$40,(a4)
00014ac4 4414	neg.b	(a4)
00014ac6 04140040	subi.b	#$40,(a4)
00014aca 0241000f	andi.w	#$F,d1
00014ace d240	add.w	d0,d1
00014ad0 45f900062a00	lea	(CollArray1).l,a2
00014ad6 10321000	move.b	(a2,d1.w),d0
00014ada 4880	ext.w	d0
00014adc bd44	eor.w	d6,d4
00014ade 0804000c	btst	#$C,d4
00014ae2 6702	beq.s	.noflip3
00014ae4 4440	neg.w	d0
00014ae6 4a40	tst.w	d0
00014ae8 679c	beq.s	.isblank2
00014aea 6b10	bmi.s	.negfloor
00014aec 3202	move.w	d2,d1
00014aee 0241000f	andi.w	#$F,d1
00014af2 d041	add.w	d1,d0
00014af4 323c000f	move.w	#$F,d1
00014af8 9240	sub.w	d0,d1
00014afa 4e75	rts	
00014afc 3202	move.w	d2,d1
00014afe 0241000f	andi.w	#$F,d1
00014b02 d041	add.w	d1,d0
00014b04 6a00ff80	bpl.w	.isblank2
00014b08 4641	not.w	d1
00014b0a 4e75	rts	
00014b0c 6100fe4e	bsr.w	FindNearestTile
00014b10 3011	move.w	(a1),d0
00014b12 3800	move.w	d0,d4
00014b14 024007ff	andi.w	#$7FF,d0
00014b18 6704	beq.s	loc_14B1E
00014b1a 0b04	btst	d5,d4
00014b1c 660e	bne.s	loc_14B2C
00014b1e d64b	add.w	a3,d3
00014b20 61000092	bsr.w	FindWall2
00014b24 964b	sub.w	a3,d3
00014b26 06410010	addi.w	#$10,d1
00014b2a 4e75	rts	
00014b2c 2478f796	movea.l	(v_collindex).w,a2
00014b30 10320000	move.b	(a2,d0.w),d0
00014b34 024000ff	andi.w	#$FF,d0
00014b38 67e4	beq.s	loc_14B1E
00014b3a 45f900062900	lea	(AngleMap).l,a2
00014b40 18b20000	move.b	(a2,d0.w),(a4)
00014b44 e948	lsl.w	#4,d0
00014b46 3202	move.w	d2,d1
00014b48 0804000c	btst	#$C,d4
00014b4c 670c	beq.s	loc_14B5A
00014b4e 4641	not.w	d1
00014b50 06140040	addi.b	#$40,(a4)
00014b54 4414	neg.b	(a4)
00014b56 04140040	subi.b	#$40,(a4)
00014b5a 0804000b	btst	#$B,d4
00014b5e 6702	beq.s	loc_14B62
00014b60 4414	neg.b	(a4)
00014b62 0241000f	andi.w	#$F,d1
00014b66 d240	add.w	d0,d1
00014b68 45f900063a00	lea	(CollArray2).l,a2
00014b6e 10321000	move.b	(a2,d1.w),d0
00014b72 4880	ext.w	d0
00014b74 bd44	eor.w	d6,d4
00014b76 0804000b	btst	#$B,d4
00014b7a 6702	beq.s	loc_14B7E
00014b7c 4440	neg.w	d0
00014b7e 4a40	tst.w	d0
00014b80 679c	beq.s	loc_14B1E
00014b82 6b16	bmi.s	loc_14B9A
00014b84 0c000010	cmpi.b	#$10,d0
00014b88 671c	beq.s	loc_14BA6
00014b8a 3203	move.w	d3,d1
00014b8c 0241000f	andi.w	#$F,d1
00014b90 d041	add.w	d1,d0
00014b92 323c000f	move.w	#$F,d1
00014b96 9240	sub.w	d0,d1
00014b98 4e75	rts	
00014b9a 3203	move.w	d3,d1
00014b9c 0241000f	andi.w	#$F,d1
00014ba0 d041	add.w	d1,d0
00014ba2 6a00ff7a	bpl.w	loc_14B1E
00014ba6 964b	sub.w	a3,d3
00014ba8 6100000a	bsr.w	FindWall2
00014bac d64b	add.w	a3,d3
00014bae 04410010	subi.w	#$10,d1
00014bb2 4e75	rts	
00014bb4 6100fda6	bsr.w	FindNearestTile
00014bb8 3011	move.w	(a1),d0
00014bba 3800	move.w	d0,d4
00014bbc 024007ff	andi.w	#$7FF,d0
00014bc0 6704	beq.s	loc_14BC6
00014bc2 0b04	btst	d5,d4
00014bc4 660e	bne.s	loc_14BD4
00014bc6 323c000f	move.w	#$F,d1
00014bca 3003	move.w	d3,d0
00014bcc 0240000f	andi.w	#$F,d0
00014bd0 9240	sub.w	d0,d1
00014bd2 4e75	rts	
00014bd4 2478f796	movea.l	(v_collindex).w,a2
00014bd8 10320000	move.b	(a2,d0.w),d0
00014bdc 024000ff	andi.w	#$FF,d0
00014be0 67e4	beq.s	loc_14BC6
00014be2 45f900062900	lea	(AngleMap).l,a2
00014be8 18b20000	move.b	(a2,d0.w),(a4)
00014bec e948	lsl.w	#4,d0
00014bee 3202	move.w	d2,d1
00014bf0 0804000c	btst	#$C,d4
00014bf4 670c	beq.s	loc_14C02
00014bf6 4641	not.w	d1
00014bf8 06140040	addi.b	#$40,(a4)
00014bfc 4414	neg.b	(a4)
00014bfe 04140040	subi.b	#$40,(a4)
00014c02 0804000b	btst	#$B,d4
00014c06 6702	beq.s	loc_14C0A
00014c08 4414	neg.b	(a4)
00014c0a 0241000f	andi.w	#$F,d1
00014c0e d240	add.w	d0,d1
00014c10 45f900063a00	lea	(CollArray2).l,a2
00014c16 10321000	move.b	(a2,d1.w),d0
00014c1a 4880	ext.w	d0
00014c1c bd44	eor.w	d6,d4
00014c1e 0804000b	btst	#$B,d4
00014c22 6702	beq.s	loc_14C26
00014c24 4440	neg.w	d0
00014c26 4a40	tst.w	d0
00014c28 679c	beq.s	loc_14BC6
00014c2a 6b10	bmi.s	loc_14C3C
00014c2c 3203	move.w	d3,d1
00014c2e 0241000f	andi.w	#$F,d1
00014c32 d041	add.w	d1,d0
00014c34 323c000f	move.w	#$F,d1
00014c38 9240	sub.w	d0,d1
00014c3a 4e75	rts	
00014c3c 3203	move.w	d3,d1
00014c3e 0241000f	andi.w	#$F,d1
00014c42 d041	add.w	d1,d0
00014c44 6a00ff80	bpl.w	loc_14BC6
00014c48 4641	not.w	d1
00014c4a 4e75	rts	
00014c4c 4e75	rts	
00014c4e 43f900062a00	lea	(RawColBlocks).l,a1
00014c54 45f900062a00	lea	(ConvRowColBlocks).l,a2
00014c5a 363c00ff	move.w	#$100-1,d3
00014c5e 7a10	moveq	#16,d5
00014c60 343c000f	move.w	#16-1,d2
00014c64 7800	moveq	#0,d4
00014c66 323c000f	move.w	#16-1,d1
00014c6a 3019	move.w	(a1)+,d0
00014c6c eaa8	lsr.l	d5,d0
00014c6e d944	addx.w	d4,d4
00014c70 51c9fff8	dbf	d1,.rowLoop
00014c74 34c4	move.w	d4,(a2)+
00014c76 92fc0020	suba.w	#2*16,a1
00014c7a 5345	subq.w	#1,d5
00014c7c 51caffe6	dbf	d2,.columnLoop
00014c80 d2fc0020	adda.w	#2*16,a1
00014c84 51cbffd8	dbf	d3,.blockLoop
00014c88 43f900062a00	lea	(ConvRowColBlocks).l,a1
00014c8e 45f900063a00	lea	(CollArray2).l,a2
00014c94 610c	bsr.s	.convertArray
00014c96 43f900062a00	lea	(RawColBlocks).l,a1
00014c9c 45f900062a00	lea	(CollArray1).l,a2
00014ca2 363c0fff	move.w	#$1000-1,d3
00014ca6 7400	moveq	#0,d2
00014ca8 323c000f	move.w	#$F,d1
00014cac 3019	move.w	(a1)+,d0
00014cae 6724	beq.s	.noCollision
00014cb0 6b0c	bmi.s	.topPixelSolid
00014cb2 e248	lsr.w	#1,d0
00014cb4 6402	bhs.s	.pixelNotSolid1
00014cb6 5202	addq.b	#1,d2
00014cb8 51c9fff8	dbf	d1,.processColumnLoop1
00014cbc 6018	bra.s	.columnProcessed
00014cbe 0c40ffff	cmpi.w	#$FFFF,d0
00014cc2 670c	beq.s	.entireColumnSolid
00014cc4 e348	lsl.w	#1,d0
00014cc6 6402	bhs.s	.pixelNotSolid2
00014cc8 5302	subq.b	#1,d2
00014cca 51c9fff8	dbf	d1,.processColumnLoop2
00014cce 6006	bra.s	.columnProcessed
00014cd0 303c0010	move.w	#$10,d0
00014cd4 3400	move.w	d0,d2
00014cd6 14c2	move.b	d2,(a2)+
00014cd8 51cbffcc	dbf	d3,.processLoop
00014cdc 4e75	rts	
00014cde 26280008	move.l	obX(a0),d3
00014ce2 2428000c	move.l	obY(a0),d2
00014ce6 32280010	move.w	obVelX(a0),d1
00014cea 48c1	ext.l	d1
00014cec e181	asl.l	#8,d1
00014cee d681	add.l	d1,d3
00014cf0 32280012	move.w	obVelY(a0),d1
00014cf4 48c1	ext.l	d1
00014cf6 e181	asl.l	#8,d1
00014cf8 d481	add.l	d1,d2
00014cfa 4842	swap	d2
00014cfc 4843	swap	d3
00014cfe 11c0f768	move.b	d0,(v_anglebuffer).w
00014d02 11c0f76a	move.b	d0,(v_anglebuffer2).w
00014d06 1200	move.b	d0,d1
00014d08 06000020	addi.b	#$20,d0
00014d0c 6a0c	bpl.s	loc_14D1A
00014d0e 1001	move.b	d1,d0
00014d10 6a02	bpl.s	loc_14D14
00014d12 5300	subq.b	#1,d0
00014d14 06000020	addi.b	#$20,d0
00014d18 600a	bra.s	loc_14D24
00014d1a 1001	move.b	d1,d0
00014d1c 6a02	bpl.s	loc_14D20
00014d1e 5200	addq.b	#1,d0
00014d20 0600001f	addi.b	#$1F,d0
00014d24 020000c0	andi.b	#$C0,d0
00014d28 670000c6	beq.w	Sonic_FindFloor_Quick
00014d2c 0c000080	cmpi.b	#$80,d0
00014d30 6700024a	beq.w	Sonic_FindCeiling_Quick
00014d34 02010038	andi.b	#$38,d1
00014d38 6602	bne.s	loc_14D3C
00014d3a 5042	addq.w	#8,d2
00014d3c 0c000040	cmpi.b	#$40,d0
00014d40 67000308	beq.w	Sonic_FindWallLeft_Quick
00014d44 60000176	bra.w	Sonic_FindWallRight_Quick
00014d48 11c0f768	move.b	d0,(v_anglebuffer).w
00014d4c 11c0f76a	move.b	d0,(v_anglebuffer2).w
00014d50 06000020	addi.b	#$20,d0
00014d54 020000c0	andi.b	#$C0,d0
00014d58 0c000040	cmpi.b	#$40,d0
00014d5c 67000278	beq.w	Sonic_FindWallLeft
00014d60 0c000080	cmpi.b	#$80,d0
00014d64 670001a2	beq.w	Sonic_FindCeiling
00014d68 0c0000c0	cmpi.b	#$C0,d0
00014d6c 670000e2	beq.w	Sonic_FindWallRight
00014d70 3428000c	move.w	obY(a0),d2
00014d74 36280008	move.w	obX(a0),d3
00014d78 7000	moveq	#0,d0
00014d7a 10280016	move.b	obHeight(a0),d0
00014d7e 4880	ext.w	d0
00014d80 d440	add.w	d0,d2
00014d82 10280017	move.b	obWidth(a0),d0
00014d86 4880	ext.w	d0
00014d88 d640	add.w	d0,d3
00014d8a 49f8f768	lea	(v_anglebuffer).w,a4
00014d8e 367c0010	movea.w	#$10,a3
00014d92 3c3c0000	move.w	#0,d6
00014d96 7a0d	moveq	#$D,d5
00014d98 6100fc34	bsr.w	FindFloor
00014d9c 3f01	move.w	d1,-(sp)
00014d9e 3428000c	move.w	obY(a0),d2
00014da2 36280008	move.w	obX(a0),d3
00014da6 7000	moveq	#0,d0
00014da8 10280016	move.b	obHeight(a0),d0
00014dac 4880	ext.w	d0
00014dae d440	add.w	d0,d2
00014db0 10280017	move.b	obWidth(a0),d0
00014db4 4880	ext.w	d0
00014db6 9640	sub.w	d0,d3
00014db8 49f8f76a	lea	(v_anglebuffer2).w,a4
00014dbc 367c0010	movea.w	#$10,a3
00014dc0 3c3c0000	move.w	#0,d6
00014dc4 7a0d	moveq	#$D,d5
00014dc6 6100fc06	bsr.w	FindFloor
00014dca 301f	move.w	(sp)+,d0
00014dcc 143c0000	move.b	#0,d2
00014dd0 1638f76a	move.b	(v_anglebuffer2).w,d3
00014dd4 b240	cmp.w	d0,d1
00014dd6 6f06	ble.s	loc_14DDE
00014dd8 1638f768	move.b	(v_anglebuffer).w,d3
00014ddc c141	exg.l	d0,d1
00014dde 08030000	btst	#0,d3
00014de2 6702	beq.s	locret_14DE6
00014de4 1602	move.b	d2,d3
00014de6 4e75	rts	
00014de8 3428000c	move.w	obY(a0),d2
00014dec 36280008	move.w	obX(a0),d3
00014df0 0642000a	addi.w	#$A,d2
00014df4 49f8f768	lea	(v_anglebuffer).w,a4
00014df8 367c0010	movea.w	#$10,a3
00014dfc 3c3c0000	move.w	#0,d6
00014e00 7a0e	moveq	#$E,d5
00014e02 6100fbca	bsr.w	FindFloor
00014e06 143c0000	move.b	#0,d2
00014e0a 1638f768	move.b	(v_anglebuffer).w,d3
00014e0e 08030000	btst	#0,d3
00014e12 6702	beq.s	.no_angle_snap
00014e14 1602	move.b	d2,d3
00014e16 4e75	rts	
00014e18 36280008	move.w	obX(a0),d3
00014e1c 3428000c	move.w	obY(a0),d2
00014e20 7000	moveq	#0,d0
00014e22 10280016	move.b	obHeight(a0),d0
00014e26 4880	ext.w	d0
00014e28 d440	add.w	d0,d2
00014e2a 49f8f768	lea	(v_anglebuffer).w,a4
00014e2e 18bc0000	move.b	#0,(a4)
00014e32 367c0010	movea.w	#$10,a3
00014e36 3c3c0000	move.w	#0,d6
00014e3a 7a0d	moveq	#$D,d5
00014e3c 6100fb90	bsr.w	FindFloor
00014e40 1638f768	move.b	(v_anglebuffer).w,d3
00014e44 08030000	btst	#0,d3
00014e48 6704	beq.s	locret_14E4E
00014e4a 163c0000	move.b	#0,d3
00014e4e 4e75	rts	
00014e50 3428000c	move.w	obY(a0),d2
00014e54 36280008	move.w	obX(a0),d3
00014e58 7000	moveq	#0,d0
00014e5a 10280017	move.b	obWidth(a0),d0
00014e5e 4880	ext.w	d0
00014e60 9440	sub.w	d0,d2
00014e62 10280016	move.b	obHeight(a0),d0
00014e66 4880	ext.w	d0
00014e68 d640	add.w	d0,d3
00014e6a 49f8f768	lea	(v_anglebuffer).w,a4
00014e6e 367c0010	movea.w	#$10,a3
00014e72 3c3c0000	move.w	#0,d6
00014e76 7a0e	moveq	#$E,d5
00014e78 6100fc92	bsr.w	FindWall
00014e7c 3f01	move.w	d1,-(sp)
00014e7e 3428000c	move.w	obY(a0),d2
00014e82 36280008	move.w	obX(a0),d3
00014e86 7000	moveq	#0,d0
00014e88 10280017	move.b	obWidth(a0),d0
00014e8c 4880	ext.w	d0
00014e8e d440	add.w	d0,d2
00014e90 10280016	move.b	obHeight(a0),d0
00014e94 4880	ext.w	d0
00014e96 d640	add.w	d0,d3
00014e98 49f8f76a	lea	(v_anglebuffer2).w,a4
00014e9c 367c0010	movea.w	#$10,a3
00014ea0 3c3c0000	move.w	#0,d6
00014ea4 7a0e	moveq	#$E,d5
00014ea6 6100fc64	bsr.w	FindWall
00014eaa 301f	move.w	(sp)+,d0
00014eac 143c00c0	move.b	#-$40,d2
00014eb0 6000ff1e	bra.w	Sonic_FindSmaller
00014eb4 3428000c	move.w	obY(a0),d2
00014eb8 36280008	move.w	obX(a0),d3
00014ebc 0643000a	addi.w	#$A,d3
00014ec0 49f8f768	lea	(v_anglebuffer).w,a4
00014ec4 367c0010	movea.w	#$10,a3
00014ec8 3c3c0000	move.w	#0,d6
00014ecc 7a0e	moveq	#$E,d5
00014ece 6100fc3c	bsr.w	FindWall
00014ed2 143c00c0	move.b	#-$40,d2
00014ed6 6000ff32	bra.w	Sonic_SnapAngle
00014eda d6680008	add.w	obX(a0),d3
00014ede 3428000c	move.w	obY(a0),d2
00014ee2 49f8f768	lea	(v_anglebuffer).w,a4
00014ee6 18bc0000	move.b	#0,(a4)
00014eea 367c0010	movea.w	#$10,a3
00014eee 3c3c0000	move.w	#0,d6
00014ef2 7a0e	moveq	#$E,d5
00014ef4 6100fc16	bsr.w	FindWall
00014ef8 1638f768	move.b	(v_anglebuffer).w,d3
00014efc 08030000	btst	#0,d3
00014f00 6704	beq.s	.return
00014f02 163c00c0	move.b	#-$40,d3
00014f06 4e75	rts	
00014f08 3428000c	move.w	obY(a0),d2
00014f0c 36280008	move.w	obX(a0),d3
00014f10 7000	moveq	#0,d0
00014f12 10280016	move.b	obHeight(a0),d0
00014f16 4880	ext.w	d0
00014f18 9440	sub.w	d0,d2
00014f1a 0a42000f	eori.w	#$F,d2
00014f1e 10280017	move.b	obWidth(a0),d0
00014f22 4880	ext.w	d0
00014f24 d640	add.w	d0,d3
00014f26 49f8f768	lea	(v_anglebuffer).w,a4
00014f2a 367cfff0	movea.w	#-$10,a3
00014f2e 3c3c1000	move.w	#$1000,d6
00014f32 7a0e	moveq	#$E,d5
00014f34 6100fa98	bsr.w	FindFloor
00014f38 3f01	move.w	d1,-(sp)
00014f3a 3428000c	move.w	obY(a0),d2
00014f3e 36280008	move.w	obX(a0),d3
00014f42 7000	moveq	#0,d0
00014f44 10280016	move.b	obHeight(a0),d0
00014f48 4880	ext.w	d0
00014f4a 9440	sub.w	d0,d2
00014f4c 0a42000f	eori.w	#$F,d2
00014f50 10280017	move.b	obWidth(a0),d0
00014f54 4880	ext.w	d0
00014f56 9640	sub.w	d0,d3
00014f58 49f8f76a	lea	(v_anglebuffer2).w,a4
00014f5c 367cfff0	movea.w	#-$10,a3
00014f60 3c3c1000	move.w	#$1000,d6
00014f64 7a0e	moveq	#$E,d5
00014f66 6100fa66	bsr.w	FindFloor
00014f6a 301f	move.w	(sp)+,d0
00014f6c 143c0080	move.b	#-$80,d2
00014f70 6000fe5e	bra.w	Sonic_FindSmaller
00014f74 3428000c	move.w	obY(a0),d2
00014f78 36280008	move.w	obX(a0),d3
00014f7c 0442000a	subi.w	#$A,d2
00014f80 0a42000f	eori.w	#$F,d2
00014f84 49f8f768	lea	(v_anglebuffer).w,a4
00014f88 367cfff0	movea.w	#-$10,a3
00014f8c 3c3c1000	move.w	#$1000,d6
00014f90 7a0e	moveq	#$E,d5
00014f92 6100fa3a	bsr.w	FindFloor
00014f96 143c0080	move.b	#-$80,d2
00014f9a 6000fe6e	bra.w	Sonic_SnapAngle
00014f9e 3428000c	move.w	obY(a0),d2
00014fa2 36280008	move.w	obX(a0),d3
00014fa6 7000	moveq	#0,d0
00014fa8 10280016	move.b	obHeight(a0),d0
00014fac 4880	ext.w	d0
00014fae 9440	sub.w	d0,d2
00014fb0 0a42000f	eori.w	#$F,d2
00014fb4 49f8f768	lea	(v_anglebuffer).w,a4
00014fb8 367cfff0	movea.w	#-$10,a3
00014fbc 3c3c1000	move.w	#$1000,d6
00014fc0 7a0e	moveq	#$E,d5
00014fc2 6100fa0a	bsr.w	FindFloor
00014fc6 1638f768	move.b	(v_anglebuffer).w,d3
00014fca 08030000	btst	#0,d3
00014fce 6704	beq.s	locret_14FD4
00014fd0 163c0080	move.b	#-$80,d3
00014fd4 4e75	rts	
00014fd6 3428000c	move.w	obY(a0),d2
00014fda 36280008	move.w	obX(a0),d3
00014fde 7000	moveq	#0,d0
00014fe0 10280017	move.b	obWidth(a0),d0
00014fe4 4880	ext.w	d0
00014fe6 9440	sub.w	d0,d2
00014fe8 10280016	move.b	obHeight(a0),d0
00014fec 4880	ext.w	d0
00014fee 9640	sub.w	d0,d3
00014ff0 0a43000f	eori.w	#$F,d3
00014ff4 49f8f768	lea	(v_anglebuffer).w,a4
00014ff8 367cfff0	movea.w	#-$10,a3
00014ffc 3c3c0800	move.w	#$800,d6
00015000 7a0e	moveq	#$E,d5
00015002 6100fb08	bsr.w	FindWall
00015006 3f01	move.w	d1,-(sp)
00015008 3428000c	move.w	obY(a0),d2
0001500c 36280008	move.w	obX(a0),d3
00015010 7000	moveq	#0,d0
00015012 10280017	move.b	obWidth(a0),d0
00015016 4880	ext.w	d0
00015018 d440	add.w	d0,d2
0001501a 10280016	move.b	obHeight(a0),d0
0001501e 4880	ext.w	d0
00015020 9640	sub.w	d0,d3
00015022 0a43000f	eori.w	#$F,d3
00015026 49f8f76a	lea	(v_anglebuffer2).w,a4
0001502a 367cfff0	movea.w	#-$10,a3
0001502e 3c3c0800	move.w	#$800,d6
00015032 7a0e	moveq	#$E,d5
00015034 6100fad6	bsr.w	FindWall
00015038 301f	move.w	(sp)+,d0
0001503a 143c0040	move.b	#$40,d2
0001503e 6000fd90	bra.w	Sonic_FindSmaller
00015042 3428000c	move.w	obY(a0),d2
00015046 36280008	move.w	obX(a0),d3
0001504a 0443000a	subi.w	#$A,d3
0001504e 0a43000f	eori.w	#$F,d3
00015052 49f8f768	lea	(v_anglebuffer).w,a4
00015056 367cfff0	movea.w	#-$10,a3
0001505a 3c3c0800	move.w	#$800,d6
0001505e 7a0e	moveq	#$E,d5
00015060 6100faaa	bsr.w	FindWall
00015064 143c0040	move.b	#$40,d2
00015068 6000fda0	bra.w	Sonic_SnapAngle
0001506c d6680008	add.w	obX(a0),d3
00015070 3428000c	move.w	obY(a0),d2
00015074 49f8f768	lea	(v_anglebuffer).w,a4
00015078 18bc0000	move.b	#0,(a4)
0001507c 367cfff0	movea.w	#-$10,a3
00015080 3c3c0800	move.w	#$800,d6
00015084 7a0e	moveq	#$E,d5
00015086 6100fa84	bsr.w	FindWall
0001508a 1638f768	move.b	(v_anglebuffer).w,d3
0001508e 08030000	btst	#0,d3
00015092 6704	beq.s	.return
00015094 163c0040	move.b	#$40,d3
00015098 4e75	rts	
0001509a 7000	moveq	#0,d0
0001509c 10280024	move.b	obRoutine(a0),d0
000150a0 323b0006	move.w	Jun_Index(pc,d0.w),d1
000150a4 4efb1002	jmp	Jun_Index(pc,d1.w)
000150b0 54280024	addq.b	#2,obRoutine(a0)
000150b4 323c0001	move.w	#1,d1
000150b8 2248	movea.l	a0,a1
000150ba 6028	bra.s	.makeitem
000150bc 610089ce	bsr.w	FindFreeObj
000150c0 663c	bne.s	.fail
000150c8 58290024	addq.b	#4,obRoutine(a1)
000150cc 336800080008	move.w	obX(a0),obX(a1)
000150d2 3368000c000c	move.w	obY(a0),obY(a1)
000150d8 137c00030018	move.b	#3,obPriority(a1)
000150de 137c0010001a	move.b	#$10,obFrame(a1)
000150e4 237c000152920004	move.l	#Map_Jun,obMap(a1)
000150ec 337c43480002	move.w	#ArtTile_SBZ_Junction|Tile_Pal3,obGfx(a1)
000150f2 002900040001	ori.b	#4,obRender(a1)
000150f8 137c00380019	move.b	#$38,obActWid(a1)
000150fe 51c9ffbc	dbf	d1,.repeat
00015102 117c00300019	move.b	#$30,obActWid(a0)
00015108 117c00040018	move.b	#4,obPriority(a0)
0001510e 317c003c0030	move.w	#$3C,objoff_30(a0)
00015114 117c00010034	move.b	#1,jun_frame(a0)
0001511a 116800280038	move.b	obSubtype(a0),jun_switch(a0)
00015120 610000de	bsr.w	Jun_ChkSwitch
00015124 4a280001	tst.b	obRender(a0)
00015128 6a00008a	bpl.w	Jun_Display
0001512c 323c0030	move.w	#$30,d1
00015130 3401	move.w	d1,d2
00015132 3602	move.w	d2,d3
00015134 5243	addq.w	#1,d3
00015136 38280008	move.w	obX(a0),d4
0001513a 6100a89a	bsr.w	SolidObject
0001513e 082800050022	btst	#5,obStatus(a0)
00015144 6700006e	beq.w	Jun_Display
00015148 43f8d000	lea	(v_player).w,a1
0001514c 720e	moveq	#$E,d1
0001514e 30290008	move.w	obX(a1),d0
00015152 b0680008	cmp.w	obX(a0),d0
00015156 6502	blo.s	.isleft
00015158 7207	moveq	#7,d1
0001515a b228001a	cmp.b	obFrame(a0),d1
0001515e 6654	bne.s	Jun_Display
00015160 11410032	move.b	d1,objoff_32(a0)
00015164 58280024	addq.b	#4,obRoutine(a0)
00015168 11fc0001f7c8	move.b	#1,(f_playerctrl).w
0001516e 137c0002001c	move.b	#id_Roll,obAnim(a1)
00015174 337c08000014	move.w	#$800,obInertia(a1)
0001517a 337c00000010	move.w	#0,obVelX(a1)
00015180 337c00000012	move.w	#0,obVelY(a1)
00015186 08a800050022	bclr	#5,obStatus(a0)
0001518c 08a900050022	bclr	#5,obStatus(a1)
00015192 08e900010022	bset	#1,obStatus(a1)
00015198 34290008	move.w	obX(a1),d2
0001519c 3629000c	move.w	obY(a1),d3
000151a0 610000a6	bsr.w	Jun_ChgPos
000151a4 d5690008	add.w	d2,obX(a1)
000151a8 d769000c	add.w	d3,obY(a1)
000151ac e0e90008	asr.w	obX(a1)
000151b0 e0e9000c	asr.w	obY(a1)
000151b4 6000a4f6	bra.w	RememberState
000151b8 1028001a	move.b	obFrame(a0),d0
000151bc 0c000004	cmpi.b	#4,d0
000151c0 6706	beq.s	.release
000151c2 0c000007	cmpi.b	#7,d0
000151c6 6630	bne.s	.dontrelease
000151c8 b0280032	cmp.b	objoff_32(a0),d0
000151cc 672a	beq.s	.dontrelease
000151ce 43f8d000	lea	(v_player).w,a1
000151d2 337c00000010	move.w	#0,obVelX(a1)
000151d8 337c08000012	move.w	#$800,obVelY(a1)
000151de 0c000004	cmpi.b	#4,d0
000151e2 670c	beq.s	.isdown
000151e4 337c08000010	move.w	#$800,obVelX(a1)
000151ea 337c08000012	move.w	#$800,obVelY(a1)
000151f0 4238f7c8	clr.b	(f_playerctrl).w
000151f4 59280024	subq.b	#4,obRoutine(a0)
000151f8 6106	bsr.s	Jun_ChkSwitch
000151fa 614c	bsr.s	Jun_ChgPos
000151fc 6000a4ae	bra.w	RememberState
00015200 45f8f7e0	lea	(f_switch).w,a2
00015204 7000	moveq	#0,d0
00015206 10280038	move.b	jun_switch(a0),d0
0001520a 083200000000	btst	#0,(a2,d0.w)
00015210 6712	beq.s	.unpressed
00015212 4a280036	tst.b	jun_reverse(a0)
00015216 6610	bne.s	.animate
00015218 44280034	neg.b	jun_frame(a0)
0001521c 117c00010036	move.b	#1,jun_reverse(a0)
00015222 6004	bra.s	.animate
00015224 42280036	clr.b	jun_reverse(a0)
00015228 5328001e	subq.b	#1,obTimeFrame(a0)
0001522c 6a18	bpl.s	.nochange
0001522e 117c0007001e	move.b	#7,obTimeFrame(a0)
00015234 12280034	move.b	jun_frame(a0),d1
00015238 1028001a	move.b	obFrame(a0),d0
0001523c d001	add.b	d1,d0
0001523e 0200000f	andi.b	#$F,d0
00015242 1140001a	move.b	d0,obFrame(a0)
00015246 4e75	rts	
00015248 43f8d000	lea	(v_player).w,a1
0001524c 7000	moveq	#0,d0
0001524e 1028001a	move.b	obFrame(a0),d0
00015252 d040	add.w	d0,d0
00015254 45fb001c	lea	.data(pc,d0.w),a2
00015258 101a	move.b	(a2)+,d0
0001525a 4880	ext.w	d0
0001525c d0680008	add.w	obX(a0),d0
00015260 33400008	move.w	d0,obX(a1)
00015264 101a	move.b	(a2)+,d0
00015266 4880	ext.w	d0
00015268 d068000c	add.w	obY(a0),d0
0001526c 3340000c	move.w	d0,obY(a1)
00015270 4e75	rts	
000154e2 7000	moveq	#0,d0
000154e4 10280024	move.b	obRoutine(a0),d0
000154e8 323b0006	move.w	Disc_Index(pc,d0.w),d1
000154ec 4efb1002	jmp	Disc_Index(pc,d1.w)
000154f4 54280024	addq.b	#2,obRoutine(a0)
000154f8 217c000156860004	move.l	#Map_Disc,obMap(a0)
00015500 317cc3440002	move.w	#ArtTile_SBZ_Disc|Tile_Pal3|Tile_Prio,obGfx(a0)
00015506 117c00040001	move.b	#4,obRender(a0)
0001550c 117c00040018	move.b	#4,obPriority(a0)
00015512 117c00080019	move.b	#8,obActWid(a0)
00015518 316800080032	move.w	obX(a0),disc_origX(a0)
0001551e 3168000c0030	move.w	obY(a0),disc_origY(a0)
00015524 117c00180034	move.b	#$18,disc_spot_distance(a0)
0001552a 117c00480038	move.b	#$48,disc_radius(a0)
00015530 12280028	move.b	obSubtype(a0),d1
00015534 0201000f	andi.b	#$F,d1
00015538 670c	beq.s	.typeis0
0001553a 117c00100034	move.b	#$10,disc_spot_distance(a0)
00015540 117c00380038	move.b	#$38,disc_radius(a0)
00015546 12280028	move.b	obSubtype(a0),d1
0001554a 020100f0	andi.b	#$F0,d1
0001554e 4881	ext.w	d1
00015550 e741	asl.w	#3,d1
00015552 31410036	move.w	d1,objoff_36(a0)
00015556 10280022	move.b	obStatus(a0),d0
0001555a e418	ror.b	#2,d0
0001555c 020000c0	andi.b	#$C0,d0
00015560 11400026	move.b	d0,obAngle(a0)
00015564 6100000a	bsr.w	Disc_MoveSonic
00015568 610000ba	bsr.w	Disc_MoveSpot
0001556c 600000f0	bra.w	Disc_ChkDel
00015570 7400	moveq	#0,d2
00015572 14280038	move.b	disc_radius(a0),d2
00015576 3602	move.w	d2,d3
00015578 d643	add.w	d3,d3
0001557a 43f8d000	lea	(v_player).w,a1
0001557e 30290008	move.w	obX(a1),d0
00015582 90680032	sub.w	disc_origX(a0),d0
00015586 d042	add.w	d2,d0
00015588 b043	cmp.w	d3,d0
0001558a 641c	bhs.s	.detach
0001558c 3229000c	move.w	obY(a1),d1
00015590 92680030	sub.w	disc_origY(a0),d1
00015594 d242	add.w	d2,d1
00015596 b243	cmp.w	d3,d1
00015598 640e	bhs.s	.detach
0001559a 082900010022	btst	#1,obStatus(a1)
000155a0 6716	beq.s	.attach
000155a2 4228003a	clr.b	disc_sonic_attached(a0)
000155a6 4e75	rts	
000155a8 4a28003a	tst.b	disc_sonic_attached(a0)
000155ac 6708	beq.s	.return
000155ae 42290038	clr.b	sticktoconvex(a1)
000155b2 4228003a	clr.b	disc_sonic_attached(a0)
000155b6 4e75	rts	
000155b8 4a28003a	tst.b	disc_sonic_attached(a0)
000155bc 6624	bne.s	loc_155E2
000155be 117c0001003a	move.b	#1,disc_sonic_attached(a0)
000155c4 082900020022	btst	#2,obStatus(a1)
000155ca 6604	bne.s	loc_155D0
000155cc 4229001c	clr.b	obAnim(a1)
000155d0 08a900050022	bclr	#5,obStatus(a1)
000155d6 137c0001001d	move.b	#id_Run,obPrevAni(a1)
000155dc 137c00010038	move.b	#1,sticktoconvex(a1)
000155e2 30290014	move.w	obInertia(a1),d0
000155e6 4a680036	tst.w	objoff_36(a0)
000155ea 6a1c	bpl.s	loc_15608
000155ec 0c40fc00	cmpi.w	#-$400,d0
000155f0 6f08	ble.s	loc_155FA
000155f2 337cfc000014	move.w	#-$400,obInertia(a1)
000155f8 4e75	rts	
000155fa 0c40f100	cmpi.w	#-$F00,d0
000155fe 6c06	bge.s	locret_15606
00015600 337cf1000014	move.w	#-$F00,obInertia(a1)
00015606 4e75	rts	
00015608 0c400400	cmpi.w	#$400,d0
0001560c 6c08	bge.s	loc_15616
0001560e 337c04000014	move.w	#$400,obInertia(a1)
00015614 4e75	rts	
00015616 0c400f00	cmpi.w	#$F00,d0
0001561a 6f06	ble.s	locret_15622
0001561c 337c0f000014	move.w	#$F00,obInertia(a1)
00015622 4e75	rts	
00015624 30280036	move.w	objoff_36(a0),d0
00015628 d1680026	add.w	d0,obAngle(a0)
0001562c 10280026	move.b	obAngle(a0),d0
00015630 4eb9000029da	jsr	(CalcSine).l
00015636 34280030	move.w	disc_origY(a0),d2
0001563a 36280032	move.w	disc_origX(a0),d3
0001563e 7800	moveq	#0,d4
00015640 18280034	move.b	disc_spot_distance(a0),d4
00015644 e14c	lsl.w	#8,d4
00015646 2a04	move.l	d4,d5
00015648 c9c0	muls.w	d0,d4
0001564a 4844	swap	d4
0001564c cbc1	muls.w	d1,d5
0001564e 4845	swap	d5
00015650 d842	add.w	d2,d4
00015652 da43	add.w	d3,d5
00015654 3144000c	move.w	d4,obY(a0)
00015658 31450008	move.w	d5,obX(a0)
0001565c 4e75	rts	
0001565e 30280032	move.w	disc_origX(a0),d0
00015662 0240ff80	andi.w	#$FF80,d0
00015666 3238f700	move.w	(v_screenposx).w,d1
0001566a 04410080	subi.w	#128,d1
0001566e 0241ff80	andi.w	#$FF80,d1
00015672 9041	sub.w	d1,d0
00015674 0c400280	cmpi.w	#128+320+192,d0
00015678 6206	bhi.s	.delete
0001567a 4ef90000d604	jmp	(DisplaySprite).l
00015680 4ef90000d640	jmp	(DeleteObject).l
0001568e 7000	moveq	#0,d0
00015690 10280024	move.b	obRoutine(a0),d0
00015694 323b0006	move.w	Conv_Index(pc,d0.w),d1
00015698 4efb1002	jmp	Conv_Index(pc,d1.w)
000156a0 54280024	addq.b	#2,obRoutine(a0)
000156a4 117c00800038	move.b	#128,conv_width(a0)
000156aa 12280028	move.b	obSubtype(a0),d1
000156ae 0201000f	andi.b	#$F,d1
000156b2 6706	beq.s	.typeis0
000156b4 117c00380038	move.b	#56,conv_width(a0)
000156ba 12280028	move.b	obSubtype(a0),d1
000156be 020100f0	andi.b	#$F0,d1
000156c2 4881	ext.w	d1
000156c4 e841	asr.w	#4,d1
000156c6 31410036	move.w	d1,conv_speed(a0)
000156ca 6124	bsr.s	.movesonic
000156cc 30280008	move.w	obX(a0),d0
000156d0 0240ff80	andi.w	#$FF80,d0
000156d4 3238f700	move.w	(v_screenposx).w,d1
000156d8 04410080	subi.w	#128,d1
000156dc 0241ff80	andi.w	#$FF80,d1
000156e0 9041	sub.w	d1,d0
000156e2 0c400280	cmpi.w	#128+320+192,d0
000156e6 6202	bhi.s	.delete
000156e8 4e75	rts	
000156ea 4ef90000d640	jmp	(DeleteObject).l
000156f0 7400	moveq	#0,d2
000156f2 14280038	move.b	conv_width(a0),d2
000156f6 3602	move.w	d2,d3
000156f8 d643	add.w	d3,d3
000156fa 43f8d000	lea	(v_player).w,a1
000156fe 30290008	move.w	obX(a1),d0
00015702 90680008	sub.w	obX(a0),d0
00015706 d042	add.w	d2,d0
00015708 b043	cmp.w	d3,d0
0001570a 6422	bhs.s	.notonconveyor
0001570c 3229000c	move.w	obY(a1),d1
00015710 9268000c	sub.w	obY(a0),d1
00015714 06410030	addi.w	#$30,d1
00015718 0c410030	cmpi.w	#$30,d1
0001571c 6410	bhs.s	.notonconveyor
0001571e 082900010022	btst	#1,obStatus(a1)
00015724 6608	bne.s	.notonconveyor
00015726 30280036	move.w	conv_speed(a0),d0
0001572a d1690008	add.w	d0,obX(a1)
0001572e 4e75	rts	
00015730 7000	moveq	#0,d0
00015732 10280024	move.b	obRoutine(a0),d0
00015736 323b0006	move.w	Spin_Index(pc,d0.w),d1
0001573a 4efb1002	jmp	Spin_Index(pc,d1.w)
00015744 54280024	addq.b	#2,obRoutine(a0)
00015748 217c000158e00004	move.l	#Map_Trap,obMap(a0)
00015750 317c44920002	move.w	#ArtTile_SBZ_Trap_Door|Tile_Pal3,obGfx(a0)
00015756 002800040001	ori.b	#4,obRender(a0)
0001575c 117c00800019	move.b	#$80,obActWid(a0)
00015762 7000	moveq	#0,d0
00015764 10280028	move.b	obSubtype(a0),d0
00015768 0240000f	andi.w	#$F,d0
0001576c c0fc003c	mulu.w	#$3C,d0
00015770 31400032	move.w	d0,spin_timelen(a0)
00015774 4a280028	tst.b	obSubtype(a0)
00015778 6a48	bpl.s	Spin_Trapdoor
0001577a 54280024	addq.b	#2,obRoutine(a0)
0001577e 217c0001593a0004	move.l	#Map_Spin,obMap(a0)
00015786 317c04df0002	move.w	#ArtTile_SBZ_Spinning_Platform,obGfx(a0)
0001578c 117c00100019	move.b	#$10,obActWid(a0)
00015792 117c0002001c	move.b	#2,obAnim(a0)
00015798 7000	moveq	#0,d0
0001579a 10280028	move.b	obSubtype(a0),d0
0001579e 3200	move.w	d0,d1
000157a0 0240000f	andi.w	#$F,d0
000157a4 c0fc0006	mulu.w	#6,d0
000157a8 31400030	move.w	d0,spin_timer(a0)
000157ac 31400032	move.w	d0,spin_timelen(a0)
000157b0 02410070	andi.w	#$70,d1
000157b4 06410010	addi.w	#$10,d1
000157b8 e549	lsl.w	#2,d1
000157ba 5341	subq.w	#1,d1
000157bc 31410036	move.w	d1,objoff_36(a0)
000157c0 606c	bra.s	Spin_Spinner
000157c2 53680030	subq.w	#1,spin_timer(a0)
000157c6 6a1c	bpl.s	.animate
000157c8 316800320030	move.w	spin_timelen(a0),spin_timer(a0)
000157ce 08680000001c	bchg	#0,obAnim(a0)
000157d4 4a280001	tst.b	obRender(a0)
000157d8 6a0a	bpl.s	.animate
000157da 303c00bb	move.w	#sfx_Door,d0
000157de 4eb90000139c	jsr	(QueueSound2).l
000157e4 43f9000158a4	lea	(Ani_Spin).l,a1
000157ea 4eb90000a718	jsr	(AnimateSprite).l
000157f0 4a28001a	tst.b	obFrame(a0)
000157f4 6618	bne.s	.notsolid
000157f6 323c004b	move.w	#$4B,d1
000157fa 343c000c	move.w	#$C,d2
000157fe 3602	move.w	d2,d3
00015800 5243	addq.w	#1,d3
00015802 38280008	move.w	obX(a0),d4
00015806 6100a1ce	bsr.w	SolidObject
0001580a 60009ea0	bra.w	RememberState
0001580e 082800030022	btst	#3,obStatus(a0)
00015814 6714	beq.s	.display
00015816 43f8d000	lea	(v_player).w,a1
0001581a 08a900030022	bclr	#3,obStatus(a1)
00015820 08a800030022	bclr	#3,obStatus(a0)
00015826 42280025	clr.b	obSolid(a0)
0001582a 60009e80	bra.w	RememberState
0001582e 3038fe04	move.w	(v_framecount).w,d0
00015832 c0680036	and.w	objoff_36(a0),d0
00015836 6606	bne.s	.delay
00015838 117c00010034	move.b	#1,objoff_34(a0)
0001583e 4a280034	tst.b	objoff_34(a0)
00015842 6716	beq.s	.animate
00015844 53680030	subq.w	#1,spin_timer(a0)
00015848 6a10	bpl.s	.animate
0001584a 316800320030	move.w	spin_timelen(a0),spin_timer(a0)
00015850 42280034	clr.b	objoff_34(a0)
00015854 08680000001c	bchg	#0,obAnim(a0)
0001585a 43f9000158a4	lea	(Ani_Spin).l,a1
00015860 4eb90000a718	jsr	(AnimateSprite).l
00015866 4a28001a	tst.b	obFrame(a0)
0001586a 6618	bne.s	.notsolid2
0001586c 323c001b	move.w	#$1B,d1
00015870 343c0007	move.w	#7,d2
00015874 3602	move.w	d2,d3
00015876 5243	addq.w	#1,d3
00015878 38280008	move.w	obX(a0),d4
0001587c 6100a158	bsr.w	SolidObject
00015880 60009e2a	bra.w	RememberState
00015884 082800030022	btst	#3,obStatus(a0)
0001588a 6714	beq.s	.display
0001588c 43f8d000	lea	(v_player).w,a1
00015890 08a900030022	bclr	#3,obStatus(a1)
00015896 08a800030022	bclr	#3,obStatus(a0)
0001589c 42280025	clr.b	obSolid(a0)
000158a0 60009e0a	bra.w	RememberState
0001597c 7000	moveq	#0,d0
0001597e 10280024	move.b	obRoutine(a0),d0
00015982 323b0006	move.w	Saw_Index(pc,d0.w),d1
00015986 4efb1002	jmp	Saw_Index(pc,d1.w)
0001598e 54280024	addq.b	#2,obRoutine(a0)
00015992 217c00015b980004	move.l	#Map_Saw,obMap(a0)
0001599a 317c43b50002	move.w	#ArtTile_SBZ_Saw|Tile_Pal3,obGfx(a0)
000159a0 117c00040001	move.b	#4,obRender(a0)
000159a6 117c00040018	move.b	#4,obPriority(a0)
000159ac 117c00200019	move.b	#$20,obActWid(a0)
000159b2 31680008003a	move.w	obX(a0),saw_origX(a0)
000159b8 3168000c0038	move.w	obY(a0),saw_origY(a0)
000159be 0c2800030028	cmpi.b	#3,obSubtype(a0)
000159c4 6406	bhs.s	Saw_Action
000159c6 117c00a20020	move.b	#$A2,obColType(a0)
000159cc 7000	moveq	#0,d0
000159ce 10280028	move.b	obSubtype(a0),d0
000159d2 02400007	andi.w	#7,d0
000159d6 d040	add.w	d0,d0
000159d8 323b002e	move.w	.index(pc,d0.w),d1
000159dc 4ebb102a	jsr	.index(pc,d1.w)
000159e0 3028003a	move.w	saw_origX(a0),d0
000159e4 0240ff80	andi.w	#$FF80,d0
000159e8 3238f700	move.w	(v_screenposx).w,d1
000159ec 04410080	subi.w	#128,d1
000159f0 0241ff80	andi.w	#$FF80,d1
000159f4 9041	sub.w	d1,d0
000159f6 0c400280	cmpi.w	#128+320+192,d0
000159fa 6206	bhi.s	.delete
000159fc 4ef90000d604	jmp	(DisplaySprite).l
00015a02 4ef90000d640	jmp	(DeleteObject).l
00015a12 4e75	rts	
00015a14 323c0060	move.w	#$60,d1
00015a18 7000	moveq	#0,d0
00015a1a 1038fe6c	move.b	(v_oscillate+$E).w,d0
00015a1e 082800000022	btst	#0,obStatus(a0)
00015a24 6704	beq.s	.noflip01
00015a26 4440	neg.w	d0
00015a28 d041	add.w	d1,d0
00015a2a 3228003a	move.w	saw_origX(a0),d1
00015a2e 9240	sub.w	d0,d1
00015a30 31410008	move.w	d1,obX(a0)
00015a34 5328001e	subq.b	#1,obTimeFrame(a0)
00015a38 6a0c	bpl.s	.sameframe01
00015a3a 117c0002001e	move.b	#2,obTimeFrame(a0)
00015a40 08680000001a	bchg	#0,obFrame(a0)
00015a46 4a280001	tst.b	obRender(a0)
00015a4a 6a14	bpl.s	.nosound01
00015a4c 3038fe04	move.w	(v_framecount).w,d0
00015a50 0240000f	andi.w	#$F,d0
00015a54 660a	bne.s	.nosound01
00015a56 303c00b0	move.w	#sfx_Saw,d0
00015a5a 4eb90000139c	jsr	(QueueSound2).l
00015a60 4e75	rts	
00015a62 323c0030	move.w	#$30,d1
00015a66 7000	moveq	#0,d0
00015a68 1038fe64	move.b	(v_oscillate+6).w,d0
00015a6c 082800000022	btst	#0,obStatus(a0)
00015a72 6706	beq.s	.noflip02
00015a74 4440	neg.w	d0
00015a76 06400080	addi.w	#$80,d0
00015a7a 32280038	move.w	saw_origY(a0),d1
00015a7e 9240	sub.w	d0,d1
00015a80 3141000c	move.w	d1,obY(a0)
00015a84 5328001e	subq.b	#1,obTimeFrame(a0)
00015a88 6a0c	bpl.s	.sameframe02
00015a8a 117c0002001e	move.b	#2,obTimeFrame(a0)
00015a90 08680000001a	bchg	#0,obFrame(a0)
00015a96 4a280001	tst.b	obRender(a0)
00015a9a 6a14	bpl.s	.nosound02
00015a9c 1038fe64	move.b	(v_oscillate+6).w,d0
00015aa0 0c000018	cmpi.b	#$18,d0
00015aa4 660a	bne.s	.nosound02
00015aa6 303c00b0	move.w	#sfx_Saw,d0
00015aaa 4eb90000139c	jsr	(QueueSound2).l
00015ab0 4e75	rts	
00015ab2 4a28003d	tst.b	saw_here(a0)
00015ab6 664e	bne.s	.here03
00015ab8 3038d008	move.w	(v_player+obX).w,d0
00015abc 044000c0	subi.w	#$C0,d0
00015ac0 6540	bcs.s	.nosaw03x
00015ac2 90680008	sub.w	obX(a0),d0
00015ac6 653a	bcs.s	.nosaw03x
00015ac8 3038d00c	move.w	(v_player+obY).w,d0
00015acc 04400080	subi.w	#$80,d0
00015ad0 b068000c	cmp.w	obY(a0),d0
00015ad4 642e	bhs.s	.nosaw03y
00015ad6 06400100	addi.w	#$100,d0
00015ada b068000c	cmp.w	obY(a0),d0
00015ade 6524	blo.s	.nosaw03y
00015ae0 117c0001003d	move.b	#1,saw_here(a0)
00015ae6 317c06000010	move.w	#$600,obVelX(a0)
00015aec 117c00a20020	move.b	#$A2,obColType(a0)
00015af2 117c0002001a	move.b	#2,obFrame(a0)
00015af8 303c00b0	move.w	#sfx_Saw,d0
00015afc 4eb90000139c	jsr	(QueueSound2).l
00015b02 588f	addq.l	#4,sp
00015b04 4e75	rts	
00015b06 4eb90000d5de	jsr	(SpeedToPos).l
00015b0c 31680008003a	move.w	obX(a0),saw_origX(a0)
00015b12 5328001e	subq.b	#1,obTimeFrame(a0)
00015b16 6a0c	bpl.s	.sameframe03
00015b18 117c0002001e	move.b	#2,obTimeFrame(a0)
00015b1e 08680000001a	bchg	#0,obFrame(a0)
00015b24 4e75	rts	
00015b26 4a28003d	tst.b	saw_here(a0)
00015b2a 664c	bne.s	.here04
00015b2c 3038d008	move.w	(v_player+obX).w,d0
00015b30 064000e0	addi.w	#$E0,d0
00015b34 90680008	sub.w	obX(a0),d0
00015b38 643a	bcc.s	.nosaw04x
00015b3a 3038d00c	move.w	(v_player+obY).w,d0
00015b3e 04400080	subi.w	#$80,d0
00015b42 b068000c	cmp.w	obY(a0),d0
00015b46 642e	bhs.s	.nosaw04y
00015b48 06400100	addi.w	#$100,d0
00015b4c b068000c	cmp.w	obY(a0),d0
00015b50 6524	blo.s	.nosaw04y
00015b52 117c0001003d	move.b	#1,saw_here(a0)
00015b58 317cfa000010	move.w	#-$600,obVelX(a0)
00015b5e 117c00a20020	move.b	#$A2,obColType(a0)
00015b64 117c0002001a	move.b	#2,obFrame(a0)
00015b6a 303c00b0	move.w	#sfx_Saw,d0
00015b6e 4eb90000139c	jsr	(QueueSound2).l
00015b74 588f	addq.l	#4,sp
00015b76 4e75	rts	
00015b78 4eb90000d5de	jsr	(SpeedToPos).l
00015b7e 31680008003a	move.w	obX(a0),saw_origX(a0)
00015b84 5328001e	subq.b	#1,obTimeFrame(a0)
00015b88 6a0c	bpl.s	.sameframe04
00015b8a 117c0002001e	move.b	#2,obTimeFrame(a0)
00015b90 08680000001a	bchg	#0,obFrame(a0)
00015b96 4e75	rts	
00015c12 7000	moveq	#0,d0
00015c14 10280024	move.b	obRoutine(a0),d0
00015c18 323b0006	move.w	Sto_Index(pc,d0.w),d1
00015c1c 4efb1002	jmp	Sto_Index(pc,d1.w)
00015c38 54280024	addq.b	#2,obRoutine(a0)
00015c3c 7000	moveq	#0,d0
00015c3e 10280028	move.b	obSubtype(a0),d0
00015c42 e448	lsr.w	#2,d0
00015c44 0240001c	andi.w	#$1C,d0
00015c48 47fb00da	lea	Sto_Var(pc,d0.w),a3
00015c4c 115b0019	move.b	(a3)+,obActWid(a0)
00015c50 115b0016	move.b	(a3)+,obHeight(a0)
00015c54 e448	lsr.w	#2,d0
00015c56 1140001a	move.b	d0,obFrame(a0)
00015c5a 217c00015f680004	move.l	#Map_Stomp,obMap(a0)
00015c62 317c22c00002	move.w	#ArtTile_SBZ_Moving_Block_Short|Tile_Pal2,obGfx(a0)
00015c68 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00015c6e 6648	bne.s	.isSBZ12
00015c70 08f80000f7cb	bset	#0,(v_obj6B).w
00015c76 6718	beq.s	.isSBZ3
00015c78 45f8fc00	lea	(v_objstate).w,a2
00015c7c 7000	moveq	#0,d0
00015c7e 10280023	move.b	obRespawnNo(a0),d0
00015c82 6706	beq.s	.delete
00015c84 08b200070002	bclr	#7,2(a2,d0.w)
00015c8a 4ef90000d640	jmp	(DeleteObject).l
00015c90 317c41f00002	move.w	#ArtTile_Level+$1F0|Tile_Pal3,obGfx(a0)
00015c96 0c680a800008	cmpi.w	#$A80,obX(a0)
00015c9c 661a	bne.s	.isSBZ12
00015c9e 45f8fc00	lea	(v_objstate).w,a2
00015ca2 7000	moveq	#0,d0
00015ca4 10280023	move.b	obRespawnNo(a0),d0
00015ca8 670e	beq.s	.isSBZ12
00015caa 083200000002	btst	#0,2(a2,d0.w)
00015cb0 6706	beq.s	.isSBZ12
00015cb2 4238f7cb	clr.b	(v_obj6B).w
00015cb6 60c0	bra.s	.chkdel
00015cb8 002800040001	ori.b	#4,obRender(a0)
00015cbe 117c00040018	move.b	#4,obPriority(a0)
00015cc4 316800080034	move.w	obX(a0),sto_origX(a0)
00015cca 3168000c0030	move.w	obY(a0),sto_origY(a0)
00015cd0 7000	moveq	#0,d0
00015cd2 101b	move.b	(a3)+,d0
00015cd4 3140003c	move.w	d0,objoff_3C(a0)
00015cd8 7000	moveq	#0,d0
00015cda 10280028	move.b	obSubtype(a0),d0
00015cde 6a2a	bpl.s	Sto_Action
00015ce0 0200000f	andi.b	#$F,d0
00015ce4 1140003e	move.b	d0,objoff_3E(a0)
00015ce8 11530028	move.b	(a3),obSubtype(a0)
00015cec 0c130005	cmpi.b	#5,(a3)
00015cf0 6606	bne.s	.chkgone
00015cf2 08e800040001	bset	#4,obRender(a0)
00015cf8 45f8fc00	lea	(v_objstate).w,a2
00015cfc 7000	moveq	#0,d0
00015cfe 10280023	move.b	obRespawnNo(a0),d0
00015d02 6706	beq.s	Sto_Action
00015d04 08b200070002	bclr	#7,2(a2,d0.w)
00015d0a 3f280008	move.w	obX(a0),-(sp)
00015d0e 7000	moveq	#0,d0
00015d10 10280028	move.b	obSubtype(a0),d0
00015d14 0240000f	andi.w	#$F,d0
00015d18 d040	add.w	d0,d0
00015d1a 323b006c	move.w	.index(pc,d0.w),d1
00015d1e 4ebb1068	jsr	.index(pc,d1.w)
00015d22 381f	move.w	(sp)+,d4
00015d24 4a280001	tst.b	obRender(a0)
00015d28 6a18	bpl.s	.chkdel
00015d2a 7200	moveq	#0,d1
00015d2c 12280019	move.b	obActWid(a0),d1
00015d30 0641000b	addi.w	#$B,d1
00015d34 7400	moveq	#0,d2
00015d36 14280016	move.b	obHeight(a0),d2
00015d3a 3602	move.w	d2,d3
00015d3c 5243	addq.w	#1,d3
00015d3e 61009c96	bsr.w	SolidObject
00015d42 30280034	move.w	sto_origX(a0),d0
00015d46 0240ff80	andi.w	#$FF80,d0
00015d4a 3238f700	move.w	(v_screenposx).w,d1
00015d4e 04410080	subi.w	#128,d1
00015d52 0241ff80	andi.w	#$FF80,d1
00015d56 9041	sub.w	d1,d0
00015d58 0c400280	cmpi.w	#128+320+192,d0
00015d5c 6206	bhi.s	.chkgone
00015d5e 4ef90000d604	jmp	(DisplaySprite).l
00015d64 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
00015d6a 6616	bne.s	.delete
00015d6c 4238f7cb	clr.b	(v_obj6B).w
00015d70 45f8fc00	lea	(v_objstate).w,a2
00015d74 7000	moveq	#0,d0
00015d76 10280023	move.b	obRespawnNo(a0),d0
00015d7a 6706	beq.s	.delete
00015d7c 08b200070002	bclr	#7,2(a2,d0.w)
00015d82 4ef90000d640	jmp	(DeleteObject).l
00015d94 4e75	rts	
00015d96 4a280038	tst.b	sto_active(a0)
00015d9a 6618	bne.s	.isactive01
00015d9c 45f8f7e0	lea	(f_switch).w,a2
00015da0 7000	moveq	#0,d0
00015da2 1028003e	move.b	objoff_3E(a0),d0
00015da6 083200000000	btst	#0,(a2,d0.w)
00015dac 6714	beq.s	.loc_15DC2
00015dae 117c00010038	move.b	#1,sto_active(a0)
00015db4 3028003c	move.w	objoff_3C(a0),d0
00015db8 b068003a	cmp.w	objoff_3A(a0),d0
00015dbc 6722	beq.s	.loc_15DE0
00015dbe 5468003a	addq.w	#2,objoff_3A(a0)
00015dc2 3028003a	move.w	objoff_3A(a0),d0
00015dc6 082800000022	btst	#0,obStatus(a0)
00015dcc 6706	beq.s	.noflip01
00015dce 4440	neg.w	d0
00015dd0 06400080	addi.w	#$80,d0
00015dd4 32280034	move.w	sto_origX(a0),d1
00015dd8 9240	sub.w	d0,d1
00015dda 31410008	move.w	d1,obX(a0)
00015dde 4e75	rts	
00015de0 52280028	addq.b	#1,obSubtype(a0)
00015de4 317c00b40036	move.w	#$B4,objoff_36(a0)
00015dea 42280038	clr.b	sto_active(a0)
00015dee 45f8fc00	lea	(v_objstate).w,a2
00015df2 7000	moveq	#0,d0
00015df4 10280023	move.b	obRespawnNo(a0),d0
00015df8 67c8	beq.s	.loc_15DC2
00015dfa 08f200000002	bset	#0,2(a2,d0.w)
00015e00 60c0	bra.s	.loc_15DC2
00015e02 4a280038	tst.b	sto_active(a0)
00015e06 660c	bne.s	.isactive02
00015e08 53680036	subq.w	#1,objoff_36(a0)
00015e0c 6610	bne.s	.loc_15E1E
00015e0e 117c00010038	move.b	#1,sto_active(a0)
00015e14 4a68003a	tst.w	objoff_3A(a0)
00015e18 6722	beq.s	.loc_15E3C
00015e1a 5568003a	subq.w	#2,objoff_3A(a0)
00015e1e 3028003a	move.w	objoff_3A(a0),d0
00015e22 082800000022	btst	#0,obStatus(a0)
00015e28 6706	beq.s	.noflip02
00015e2a 4440	neg.w	d0
00015e2c 06400080	addi.w	#$80,d0
00015e30 32280034	move.w	sto_origX(a0),d1
00015e34 9240	sub.w	d0,d1
00015e36 31410008	move.w	d1,obX(a0)
00015e3a 4e75	rts	
00015e3c 53280028	subq.b	#1,obSubtype(a0)
00015e40 42280038	clr.b	sto_active(a0)
00015e44 45f8fc00	lea	(v_objstate).w,a2
00015e48 7000	moveq	#0,d0
00015e4a 10280023	move.b	obRespawnNo(a0),d0
00015e4e 67ce	beq.s	.loc_15E1E
00015e50 08b200000002	bclr	#0,2(a2,d0.w)
00015e56 60c6	bra.s	.loc_15E1E
00015e58 4a280038	tst.b	sto_active(a0)
00015e5c 661e	bne.s	.isactive03
00015e5e 4a68003a	tst.w	objoff_3A(a0)
00015e62 6706	beq.s	.loc_15E6A
00015e64 5368003a	subq.w	#1,objoff_3A(a0)
00015e68 6024	bra.s	.loc_15E8E
00015e6a 53680036	subq.w	#1,objoff_36(a0)
00015e6e 6a1e	bpl.s	.loc_15E8E
00015e70 317c003c0036	move.w	#$3C,objoff_36(a0)
00015e76 117c00010038	move.b	#1,sto_active(a0)
00015e7c 5068003a	addq.w	#8,objoff_3A(a0)
00015e80 3028003a	move.w	objoff_3A(a0),d0
00015e84 b068003c	cmp.w	objoff_3C(a0),d0
00015e88 6604	bne.s	.loc_15E8E
00015e8a 42280038	clr.b	sto_active(a0)
00015e8e 3028003a	move.w	objoff_3A(a0),d0
00015e92 082800000022	btst	#0,obStatus(a0)
00015e98 6706	beq.s	.noflip03
00015e9a 4440	neg.w	d0
00015e9c 06400038	addi.w	#$38,d0
00015ea0 32280030	move.w	sto_origY(a0),d1
00015ea4 d240	add.w	d0,d1
00015ea6 3141000c	move.w	d1,obY(a0)
00015eaa 4e75	rts	
00015eac 4a280038	tst.b	sto_active(a0)
00015eb0 661e	bne.s	.isactive04
00015eb2 4a68003a	tst.w	objoff_3A(a0)
00015eb6 6706	beq.s	.loc_15EBE
00015eb8 5168003a	subq.w	#8,objoff_3A(a0)
00015ebc 6032	bra.s	.loc_15EF0
00015ebe 53680036	subq.w	#1,objoff_36(a0)
00015ec2 6a2c	bpl.s	.loc_15EF0
00015ec4 317c003c0036	move.w	#$3C,objoff_36(a0)
00015eca 117c00010038	move.b	#1,sto_active(a0)
00015ed0 3028003a	move.w	objoff_3A(a0),d0
00015ed4 b068003c	cmp.w	objoff_3C(a0),d0
00015ed8 6706	beq.s	.loc_15EE0
00015eda 5068003a	addq.w	#8,objoff_3A(a0)
00015ede 6010	bra.s	.loc_15EF0
00015ee0 53680036	subq.w	#1,objoff_36(a0)
00015ee4 6a0a	bpl.s	.loc_15EF0
00015ee6 317c003c0036	move.w	#$3C,objoff_36(a0)
00015eec 42280038	clr.b	sto_active(a0)
00015ef0 3028003a	move.w	objoff_3A(a0),d0
00015ef4 082800000022	btst	#0,obStatus(a0)
00015efa 6706	beq.s	.noflip04
00015efc 4440	neg.w	d0
00015efe 06400038	addi.w	#$38,d0
00015f02 32280030	move.w	sto_origY(a0),d1
00015f06 d240	add.w	d0,d1
00015f08 3141000c	move.w	d1,obY(a0)
00015f0c 4e75	rts	
00015f0e 4a280038	tst.b	sto_active(a0)
00015f12 662a	bne.s	.loc_15F3E
00015f14 45f8f7e0	lea	(f_switch).w,a2
00015f18 7000	moveq	#0,d0
00015f1a 1028003e	move.b	objoff_3E(a0),d0
00015f1e 083200000000	btst	#0,(a2,d0.w)
00015f24 6736	beq.s	.locret_15F5C
00015f26 117c00010038	move.b	#1,sto_active(a0)
00015f2c 45f8fc00	lea	(v_objstate).w,a2
00015f30 7000	moveq	#0,d0
00015f32 10280023	move.b	obRespawnNo(a0),d0
00015f36 6706	beq.s	.loc_15F3E
00015f38 08f200000002	bset	#0,2(a2,d0.w)
00015f3e 04a8000100000008	subi.l	#$10000,obX(a0)
00015f46 06a800008000000c	addi.l	#$8000,obY(a0)
00015f4e 316800080034	move.w	obX(a0),sto_origX(a0)
00015f54 0c6809800008	cmpi.w	#$980,obX(a0)
00015f5a 6702	beq.s	.loc_15F5E
00015f5c 4e75	rts	
00015f5e 42280028	clr.b	obSubtype(a0)
00015f62 42280038	clr.b	sto_active(a0)
00015f66 4e75	rts	
00015ff8 7000	moveq	#0,d0
00015ffa 10280024	move.b	obRoutine(a0),d0
00015ffe 323b0006	move.w	VanP_Index(pc,d0.w),d1
00016002 4efb1002	jmp	VanP_Index(pc,d1.w)
0001600e 5c280024	addq.b	#6,obRoutine(a0)
00016012 217c0001612a0004	move.l	#Map_VanP,obMap(a0)
0001601a 317c44c30002	move.w	#ArtTile_SBZ_Vanishing_Block|Tile_Pal3,obGfx(a0)
00016020 002800040001	ori.b	#4,obRender(a0)
00016026 117c00100019	move.b	#$10,obActWid(a0)
0001602c 117c00040018	move.b	#4,obPriority(a0)
00016032 7000	moveq	#0,d0
00016034 10280028	move.b	obSubtype(a0),d0
00016038 0240000f	andi.w	#$F,d0
0001603c 5240	addq.w	#1,d0
0001603e ef48	lsl.w	#7,d0
00016040 3200	move.w	d0,d1
00016042 5340	subq.w	#1,d0
00016044 31400030	move.w	d0,vanp_timer(a0)
00016048 31400032	move.w	d0,vanp_timelen(a0)
0001604c 7000	moveq	#0,d0
0001604e 10280028	move.b	obSubtype(a0),d0
00016052 024000f0	andi.w	#$F0,d0
00016056 06410080	addi.w	#$80,d1
0001605a c0c1	mulu.w	d1,d0
0001605c e088	lsr.l	#8,d0
0001605e 31400036	move.w	d0,objoff_36(a0)
00016062 5341	subq.w	#1,d1
00016064 31410038	move.w	d1,objoff_38(a0)
00016068 3038fe04	move.w	(v_framecount).w,d0
0001606c 90680036	sub.w	objoff_36(a0),d0
00016070 c0680038	and.w	objoff_38(a0),d0
00016074 6606	bne.s	.animate
00016076 59280024	subq.b	#4,obRoutine(a0)
0001607a 6010	bra.s	VanP_Detect
0001607c 43f900016116	lea	(Ani_Van).l,a1
00016082 4eb90000a718	jsr	(AnimateSprite).l
00016088 60009622	bra.w	RememberState
0001608c 53680030	subq.w	#1,vanp_timer(a0)
00016090 6a18	bpl.s	.wait
00016092 317c007f0030	move.w	#127,vanp_timer(a0)
00016098 4a28001c	tst.b	obAnim(a0)
0001609c 6706	beq.s	.isvanishing
0001609e 316800320030	move.w	vanp_timelen(a0),vanp_timer(a0)
000160a4 08680000001c	bchg	#0,obAnim(a0)
000160aa 43f900016116	lea	(Ani_Van).l,a1
000160b0 4eb90000a718	jsr	(AnimateSprite).l
000160b6 08280001001a	btst	#1,obFrame(a0)
000160bc 6632	bne.s	.notsolid
000160be 0c2800020024	cmpi.b	#2,obRoutine(a0)
000160c4 6610	bne.s	.loc_160D6
000160c6 7200	moveq	#0,d1
000160c8 12280019	move.b	obActWid(a0),d1
000160cc 4eb90000744c	jsr	(PlatformObject).l
000160d2 600095d8	bra.w	RememberState
000160d6 7200	moveq	#0,d1
000160d8 12280019	move.b	obActWid(a0),d1
000160dc 4eb9000075c0	jsr	(ExitPlatform).l
000160e2 34280008	move.w	obX(a0),d2
000160e6 4eb900007b2e	jsr	(MvSonicOnPtfm2).l
000160ec 600095be	bra.w	RememberState
000160f0 082800030022	btst	#3,obStatus(a0)
000160f6 671a	beq.s	.display
000160f8 43f8d000	lea	(v_player).w,a1
000160fc 08a900030022	bclr	#3,obStatus(a1)
00016102 08a800030022	bclr	#3,obStatus(a0)
00016108 117c00020024	move.b	#2,obRoutine(a0)
0001610e 42280025	clr.b	obSolid(a0)
00016112 60009598	bra.w	RememberState
00016146 7000	moveq	#0,d0
00016148 10280024	move.b	obRoutine(a0),d0
0001614c 323b0006	move.w	Elec_Index(pc,d0.w),d1
00016150 4efb1002	jmp	Elec_Index(pc,d1.w)
00016158 54280024	addq.b	#2,obRoutine(a0)
0001615c 217c000161e00004	move.l	#Map_Elec,obMap(a0)
00016164 317c047e0002	move.w	#ArtTile_SBZ_Electric_Orb,obGfx(a0)
0001616a 002800040001	ori.b	#4,obRender(a0)
00016170 117c00280019	move.b	#$28,obActWid(a0)
00016176 7000	moveq	#0,d0
00016178 10280028	move.b	obSubtype(a0),d0
0001617c e948	lsl.w	#4,d0
0001617e 5340	subq.w	#1,d0
00016180 31400034	move.w	d0,elec_freq(a0)
00016184 3038fe04	move.w	(v_framecount).w,d0
00016188 c0680034	and.w	elec_freq(a0),d0
0001618c 6616	bne.s	.animate
0001618e 117c0001001c	move.b	#1,obAnim(a0)
00016194 4a280001	tst.b	obRender(a0)
00016198 6a0a	bpl.s	.animate
0001619a 303c00b1	move.w	#sfx_Electric,d0
0001619e 4eb90000139c	jsr	(QueueSound2).l
000161a4 43f9000161c8	lea	(Ani_Elec).l,a1
000161aa 4eb90000a718	jsr	(AnimateSprite).l
000161b0 117c00000020	move.b	#0,obColType(a0)
000161b6 0c280004001a	cmpi.b	#4,obFrame(a0)
000161bc 6606	bne.s	.display
000161be 117c00a40020	move.b	#$A4,obColType(a0)
000161c4 600094e6	bra.w	RememberState
0001626a 7000	moveq	#0,d0
0001626c 10280024	move.b	obRoutine(a0),d0
00016270 323b0050	move.w	SpinC_Index(pc,d0.w),d1
00016274 4ebb104c	jsr	SpinC_Index(pc,d1.w)
00016278 30280030	move.w	objoff_30(a0),d0
0001627c 0240ff80	andi.w	#$FF80,d0
00016280 3238f700	move.w	(v_screenposx).w,d1
00016284 04410080	subi.w	#128,d1
00016288 0241ff80	andi.w	#$FF80,d1
0001628c 9041	sub.w	d1,d0
0001628e 0c400280	cmpi.w	#128+320+192,d0
00016292 6206	bhi.s	loc_1629A
00016294 4ef90000d604	jmp	(DisplaySprite).l
0001629a 0c380002fe11	cmpi.b	#act3,(v_act).w
000162a0 6606	bne.s	SpinC_Act1or2
000162a2 0c40ff80	cmpi.w	#-$80,d0
000162a6 64ec	bhs.s	SpinC_Display
000162a8 1028002f	move.b	objoff_2F(a0),d0
000162ac 6a0e	bpl.s	SpinC_Delete
000162ae 0240007f	andi.w	#$7F,d0
000162b2 45f8f7c1	lea	(v_obj63).w,a2
000162b6 08b200000000	bclr	#0,(a2,d0.w)
000162bc 4ef90000d640	jmp	(DeleteObject).l
000162c6 10280028	move.b	obSubtype(a0),d0
000162ca 6b0000b4	bmi.w	loc_16380
000162ce 54280024	addq.b	#2,obRoutine(a0)
000162d2 217c0001593a0004	move.l	#Map_Spin,obMap(a0)
000162da 317c04df0002	move.w	#ArtTile_SBZ_Spinning_Platform,obGfx(a0)
000162e0 117c00100019	move.b	#$10,obActWid(a0)
000162e6 002800040001	ori.b	#4,obRender(a0)
000162ec 117c00040018	move.b	#4,obPriority(a0)
000162f2 7000	moveq	#0,d0
000162f4 10280028	move.b	obSubtype(a0),d0
000162f8 3200	move.w	d0,d1
000162fa e648	lsr.w	#3,d0
000162fc 0240001e	andi.w	#$1E,d0
00016300 45fa01a4	lea	SpinC_Data(pc),a2
00016304 d4f20000	adda.w	(a2,d0.w),a2
00016308 315a0038	move.w	(a2)+,objoff_38(a0)
0001630c 315a0030	move.w	(a2)+,objoff_30(a0)
00016310 214a003c	move.l	a2,objoff_3C(a0)
00016314 0241000f	andi.w	#$F,d1
00016318 e549	lsl.w	#2,d1
0001631a 11410038	move.b	d1,objoff_38(a0)
0001631e 117c0004003a	move.b	#4,objoff_3A(a0)
00016324 4a38f7c0	tst.b	(f_conveyrev).w
00016328 672c	beq.s	loc_16356
0001632a 117c0001003b	move.b	#1,objoff_3B(a0)
00016330 4428003a	neg.b	objoff_3A(a0)
00016334 7200	moveq	#0,d1
00016336 12280038	move.b	objoff_38(a0),d1
0001633a d228003a	add.b	objoff_3A(a0),d1
0001633e b2280039	cmp.b	objoff_39(a0),d1
00016342 650e	blo.s	loc_16352
00016344 1001	move.b	d1,d0
00016346 7200	moveq	#0,d1
00016348 4a00	tst.b	d0
0001634a 6a06	bpl.s	loc_16352
0001634c 12280039	move.b	objoff_39(a0),d1
00016350 5901	subq.b	#4,d1
00016352 11410038	move.b	d1,objoff_38(a0)
00016356 317210000034	move.w	(a2,d1.w),objoff_34(a0)
0001635c 317210020036	move.w	2(a2,d1.w),objoff_36(a0)
00016362 4a41	tst.w	d1
00016364 6606	bne.s	loc_1636C
00016366 117c0001001c	move.b	#1,obAnim(a0)
0001636c 0c410008	cmpi.w	#8,d1
00016370 6606	bne.s	loc_16378
00016372 117c0000001c	move.b	#0,obAnim(a0)
00016378 6100c1f6	bsr.w	LCon_ChangeDir
0001637c 6000005a	bra.w	SpinC_Solid
00016380 1140002f	move.b	d0,objoff_2F(a0)
00016384 0240007f	andi.w	#$7F,d0
00016388 45f8f7c1	lea	(v_obj63).w,a2
0001638c 08f200000000	bset	#0,(a2,d0.w)
00016392 6706	beq.s	loc_1639A
00016394 4ef90000d640	jmp	(DeleteObject).l
0001639a d040	add.w	d0,d0
0001639c 0240001e	andi.w	#$1E,d0
000163a0 06400080	addi.w	#ObjPosSBZPlatform_Index-ObjPos_Index,d0
000163a4 45f90006b000	lea	(ObjPos_Index).l,a2
000163aa d4f20000	adda.w	(a2,d0.w),a2
000163ae 321a	move.w	(a2)+,d1
000163b0 2248	movea.l	a0,a1
000163b2 6008	bra.s	SpinC_LoadPform
000163b4 4eb90000da8c	jsr	(FindFreeObj).l
000163ba 6614	bne.s	loc_163D0
000163c2 335a0008	move.w	(a2)+,obX(a1)
000163c6 335a000c	move.w	(a2)+,obY(a1)
000163ca 301a	move.w	(a2)+,d0
000163cc 13400028	move.b	d0,obSubtype(a1)
000163d0 51c9ffe2	dbf	d1,SpinC_Loop
000163d4 588f	addq.l	#4,sp
000163d6 4e75	rts	
000163d8 43f90001648a	lea	(Ani_SpinConvey).l,a1
000163de 4eb90000a718	jsr	(AnimateSprite).l
000163e4 4a28001a	tst.b	obFrame(a0)
000163e8 661a	bne.s	loc_16404
000163ea 3f280008	move.w	obX(a0),-(sp)
000163ee 61000034	bsr.w	loc_16424
000163f2 323c001b	move.w	#$1B,d1
000163f6 343c0007	move.w	#7,d2
000163fa 3602	move.w	d2,d3
000163fc 5243	addq.w	#1,d3
000163fe 381f	move.w	(sp)+,d4
00016400 600095d4	bra.w	SolidObject
00016404 082800030022	btst	#3,obStatus(a0)
0001640a 6714	beq.s	loc_16420
0001640c 43f8d000	lea	(v_player).w,a1
00016410 08a900030022	bclr	#3,obStatus(a1)
00016416 08a800030022	bclr	#3,obStatus(a0)
0001641c 42280025	clr.b	obSolid(a0)
00016420 60000002	bra.w	loc_16424
00016424 30280008	move.w	obX(a0),d0
00016428 b0680034	cmp.w	objoff_34(a0),d0
0001642c 6656	bne.s	loc_16484
0001642e 3028000c	move.w	obY(a0),d0
00016432 b0680036	cmp.w	objoff_36(a0),d0
00016436 664c	bne.s	loc_16484
00016438 7200	moveq	#0,d1
0001643a 12280038	move.b	objoff_38(a0),d1
0001643e d228003a	add.b	objoff_3A(a0),d1
00016442 b2280039	cmp.b	objoff_39(a0),d1
00016446 650e	blo.s	loc_16456
00016448 1001	move.b	d1,d0
0001644a 7200	moveq	#0,d1
0001644c 4a00	tst.b	d0
0001644e 6a06	bpl.s	loc_16456
00016450 12280039	move.b	objoff_39(a0),d1
00016454 5901	subq.b	#4,d1
00016456 11410038	move.b	d1,objoff_38(a0)
0001645a 2268003c	movea.l	objoff_3C(a0),a1
0001645e 317110000034	move.w	(a1,d1.w),objoff_34(a0)
00016464 317110020036	move.w	2(a1,d1.w),objoff_36(a0)
0001646a 4a41	tst.w	d1
0001646c 6606	bne.s	loc_16474
0001646e 117c0001001c	move.b	#1,obAnim(a0)
00016474 0c410008	cmpi.w	#8,d1
00016478 6606	bne.s	loc_16480
0001647a 117c0000001c	move.b	#0,obAnim(a0)
00016480 6100c0ee	bsr.w	LCon_ChangeDir
00016484 4ef90000d5de	jmp	(SpeedToPos).l
0001652a 7000	moveq	#0,d0
0001652c 10280024	move.b	obRoutine(a0),d0
00016530 323b0006	move.w	Gird_Index(pc,d0.w),d1
00016534 4efb1002	jmp	Gird_Index(pc,d1.w)
0001653c 54280024	addq.b	#2,obRoutine(a0)
00016540 217c000166280004	move.l	#Map_Gird,obMap(a0)
00016548 317c42f00002	move.w	#ArtTile_SBZ_Girder|Tile_Pal3,obGfx(a0)
0001654e 002800040001	ori.b	#4,obRender(a0)
00016554 117c00040018	move.b	#4,obPriority(a0)
0001655a 117c00600019	move.b	#$60,obActWid(a0)
00016560 117c00180016	move.b	#$18,obHeight(a0)
00016566 316800080032	move.w	obX(a0),gird_origX(a0)
0001656c 3168000c0030	move.w	obY(a0),gird_origY(a0)
00016572 6100006a	bsr.w	Gird_ChgMove
00016576 3f280008	move.w	obX(a0),-(sp)
0001657a 4a68003a	tst.w	gird_delay(a0)
0001657e 6706	beq.s	.beginmove
00016580 5368003a	subq.w	#1,gird_delay(a0)
00016584 6610	bne.s	.solid
00016586 4eb90000d5de	jsr	(SpeedToPos).l
0001658c 53680034	subq.w	#1,gird_time(a0)
00016590 6604	bne.s	.solid
00016592 6100004a	bsr.w	Gird_ChgMove
00016596 381f	move.w	(sp)+,d4
00016598 4a280001	tst.b	obRender(a0)
0001659c 6a18	bpl.s	.chkdel
0001659e 7200	moveq	#0,d1
000165a0 12280019	move.b	obActWid(a0),d1
000165a4 0641000b	addi.w	#$B,d1
000165a8 7400	moveq	#0,d2
000165aa 14280016	move.b	obHeight(a0),d2
000165ae 3602	move.w	d2,d3
000165b0 5243	addq.w	#1,d3
000165b2 61009422	bsr.w	SolidObject
000165b6 30280032	move.w	gird_origX(a0),d0
000165ba 0240ff80	andi.w	#$FF80,d0
000165be 3238f700	move.w	(v_screenposx).w,d1
000165c2 04410080	subi.w	#128,d1
000165c6 0241ff80	andi.w	#$FF80,d1
000165ca 9041	sub.w	d1,d0
000165cc 0c400280	cmpi.w	#128+320+192,d0
000165d0 6206	bhi.s	.delete
000165d2 4ef90000d604	jmp	(DisplaySprite).l
000165d8 4ef90000d640	jmp	(DeleteObject).l
000165de 10280038	move.b	gird_set(a0),d0
000165e2 02400018	andi.w	#$18,d0
000165e6 43f900016608	lea	(.settings).l,a1
000165ec 43f10000	lea	(a1,d0.w),a1
000165f0 31590010	move.w	(a1)+,obVelX(a0)
000165f4 31590012	move.w	(a1)+,obVelY(a0)
000165f8 31590034	move.w	(a1)+,gird_time(a0)
000165fc 50280038	addq.b	#8,gird_set(a0)
00016600 317c0007003a	move.w	#7,gird_delay(a0)
00016606 4e75	rts	
00016668 7000	moveq	#0,d0
0001666a 10280024	move.b	obRoutine(a0),d0
0001666e 323b002a	move.w	Tele_Index(pc,d0.w),d1
00016672 4ebb1026	jsr	Tele_Index(pc,d1.w)
00016676 30280008	move.w	obX(a0),d0
0001667a 0240ff80	andi.w	#$FF80,d0
0001667e 3238f700	move.w	(v_screenposx).w,d1
00016682 04410080	subi.w	#128,d1
00016686 0241ff80	andi.w	#$FF80,d1
0001668a 9041	sub.w	d1,d0
0001668c 0c400280	cmpi.w	#128+320+192,d0
00016690 6202	bhi.s	.delete
00016692 4e75	rts	
00016694 4ef90000d640	jmp	(DeleteObject).l
000166a2 54280024	addq.b	#2,obRoutine(a0)
000166a6 10280028	move.b	obSubtype(a0),d0
000166aa d040	add.w	d0,d0
000166ac 0240001e	andi.w	#$1E,d0
000166b0 45fa01fa	lea	Tele_Data(pc),a2
000166b4 d4f20000	adda.w	(a2,d0.w),a2
000166b8 315a003a	move.w	(a2)+,objoff_3A(a0)
000166bc 214a003c	move.l	a2,objoff_3C(a0)
000166c0 315a0036	move.w	(a2)+,objoff_36(a0)
000166c4 315a0038	move.w	(a2)+,objoff_38(a0)
000166c8 43f8d000	lea	(v_player).w,a1
000166cc 30290008	move.w	obX(a1),d0
000166d0 90680008	sub.w	obX(a0),d0
000166d4 082800000022	btst	#0,obStatus(a0)
000166da 6704	beq.s	loc_166E0
000166dc 0640000f	addi.w	#$F,d0
000166e0 0c400010	cmpi.w	#$10,d0
000166e4 6476	bhs.s	locret_1675C
000166e6 3229000c	move.w	obY(a1),d1
000166ea 9268000c	sub.w	obY(a0),d1
000166ee 06410020	addi.w	#$20,d1
000166f2 0c410040	cmpi.w	#$40,d1
000166f6 6464	bhs.s	locret_1675C
000166f8 4a38f7c8	tst.b	(f_playerctrl).w
000166fc 665e	bne.s	locret_1675C
000166fe 0c2800070028	cmpi.b	#7,obSubtype(a0)
00016704 6608	bne.s	loc_1670E
00016706 0c780032fe20	cmpi.w	#50,(v_rings).w
0001670c 654e	blo.s	locret_1675C
0001670e 54280024	addq.b	#2,obRoutine(a0)
00016712 11fc0081f7c8	move.b	#$81,(f_playerctrl).w
00016718 137c0002001c	move.b	#id_Roll,obAnim(a1)
0001671e 337c08000014	move.w	#$800,obInertia(a1)
00016724 337c00000010	move.w	#0,obVelX(a1)
0001672a 337c00000012	move.w	#0,obVelY(a1)
00016730 08a800050022	bclr	#5,obStatus(a0)
00016736 08a900050022	bclr	#5,obStatus(a1)
0001673c 08e900010022	bset	#1,obStatus(a1)
00016742 336800080008	move.w	obX(a0),obX(a1)
00016748 3368000c000c	move.w	obY(a0),obY(a1)
0001674e 42280032	clr.b	objoff_32(a0)
00016752 303c00be	move.w	#sfx_Roll,d0
00016756 4eb90000139c	jsr	(QueueSound2).l
0001675c 4e75	rts	
0001675e 43f8d000	lea	(v_player).w,a1
00016762 10280032	move.b	objoff_32(a0),d0
00016766 54280032	addq.b	#2,objoff_32(a0)
0001676a 4eb9000029da	jsr	(CalcSine).l
00016770 ea40	asr.w	#5,d0
00016772 3428000c	move.w	obY(a0),d2
00016776 9440	sub.w	d0,d2
00016778 3342000c	move.w	d2,obY(a1)
0001677c 0c2800800032	cmpi.b	#$80,objoff_32(a0)
00016782 6612	bne.s	locret_16796
00016784 61000096	bsr.w	sub_1681C
00016788 54280024	addq.b	#2,obRoutine(a0)
0001678c 303c00bc	move.w	#sfx_Teleport,d0
00016790 4eb90000139c	jsr	(QueueSound2).l
00016796 4e75	rts	
00016798 588f	addq.l	#4,sp
0001679a 43f8d000	lea	(v_player).w,a1
0001679e 5328002e	subq.b	#1,objoff_2E(a0)
000167a2 6a36	bpl.s	loc_167DA
000167a4 336800360008	move.w	objoff_36(a0),obX(a1)
000167aa 33680038000c	move.w	objoff_38(a0),obY(a1)
000167b0 7200	moveq	#0,d1
000167b2 1228003a	move.b	objoff_3A(a0),d1
000167b6 5801	addq.b	#4,d1
000167b8 b228003b	cmp.b	objoff_3B(a0),d1
000167bc 6504	blo.s	loc_167C2
000167be 7200	moveq	#0,d1
000167c0 603e	bra.s	loc_16800
000167c2 1141003a	move.b	d1,objoff_3A(a0)
000167c6 2468003c	movea.l	objoff_3C(a0),a2
000167ca 317210000036	move.w	(a2,d1.w),objoff_36(a0)
000167d0 317210020038	move.w	2(a2,d1.w),objoff_38(a0)
000167d6 60000044	bra.w	sub_1681C
000167da 24290008	move.l	obX(a1),d2
000167de 2629000c	move.l	obY(a1),d3
000167e2 30290010	move.w	obVelX(a1),d0
000167e6 48c0	ext.l	d0
000167e8 e180	asl.l	#8,d0
000167ea d480	add.l	d0,d2
000167ec 30290012	move.w	obVelY(a1),d0
000167f0 48c0	ext.l	d0
000167f2 e180	asl.l	#8,d0
000167f4 d680	add.l	d0,d3
000167f6 23420008	move.l	d2,obX(a1)
000167fa 2343000c	move.l	d3,obY(a1)
000167fe 4e75	rts	
00016800 026907ff000c	andi.w	#$7FF,obY(a1)
00016806 42280024	clr.b	obRoutine(a0)
0001680a 4238f7c8	clr.b	(f_playerctrl).w
0001680e 337c00000010	move.w	#0,obVelX(a1)
00016814 337c02000012	move.w	#$200,obVelY(a1)
0001681a 4e75	rts	
0001681c 7000	moveq	#0,d0
0001681e 343c1000	move.w	#$1000,d2
00016822 30280036	move.w	objoff_36(a0),d0
00016826 90690008	sub.w	obX(a1),d0
0001682a 6c04	bge.s	loc_16830
0001682c 4440	neg.w	d0
0001682e 4442	neg.w	d2
00016830 7200	moveq	#0,d1
00016832 363c1000	move.w	#$1000,d3
00016836 32280038	move.w	objoff_38(a0),d1
0001683a 9269000c	sub.w	obY(a1),d1
0001683e 6c04	bge.s	loc_16844
00016840 4441	neg.w	d1
00016842 4443	neg.w	d3
00016844 b240	cmp.w	d0,d1
00016846 6532	blo.s	loc_1687A
00016848 7200	moveq	#0,d1
0001684a 32280038	move.w	objoff_38(a0),d1
0001684e 9269000c	sub.w	obY(a1),d1
00016852 4841	swap	d1
00016854 83c3	divs.w	d3,d1
00016856 7000	moveq	#0,d0
00016858 30280036	move.w	objoff_36(a0),d0
0001685c 90690008	sub.w	obX(a1),d0
00016860 6704	beq.s	loc_16866
00016862 4840	swap	d0
00016864 81c1	divs.w	d1,d0
00016866 33400010	move.w	d0,obVelX(a1)
0001686a 33430012	move.w	d3,obVelY(a1)
0001686e 4a41	tst.w	d1
00016870 6a02	bpl.s	loc_16874
00016872 4441	neg.w	d1
00016874 3141002e	move.w	d1,objoff_2E(a0)
00016878 4e75	rts	
0001687a 7000	moveq	#0,d0
0001687c 30280036	move.w	objoff_36(a0),d0
00016880 90690008	sub.w	obX(a1),d0
00016884 4840	swap	d0
00016886 81c2	divs.w	d2,d0
00016888 7200	moveq	#0,d1
0001688a 32280038	move.w	objoff_38(a0),d1
0001688e 9269000c	sub.w	obY(a1),d1
00016892 6704	beq.s	loc_16898
00016894 4841	swap	d1
00016896 83c0	divs.w	d0,d1
00016898 33410012	move.w	d1,obVelY(a1)
0001689c 33420010	move.w	d2,obVelX(a1)
000168a0 4a40	tst.w	d0
000168a2 6a02	bpl.s	loc_168A6
000168a4 4440	neg.w	d0
000168a6 3140002e	move.w	d0,objoff_2E(a0)
000168aa 4e75	rts	
00016934 7000	moveq	#0,d0
00016936 10280024	move.b	obRoutine(a0),d0
0001693a 323b0006	move.w	Cat_Index(pc,d0.w),d1
0001693e 4efb1002	jmp	Cat_Index(pc,d1.w)
00016950 4e75	rts	
00016952 117c00070016	move.b	#7,obHeight(a0)
00016958 117c00080017	move.b	#8,obWidth(a0)
0001695e 4eb90000d5b2	jsr	(ObjectFall).l
00016964 4eb900014e18	jsr	(ObjFloorDist).l
0001696a 4a41	tst.w	d1
0001696c 6ae2	bpl.s	locret_16950
0001696e d368000c	add.w	d1,obY(a0)
00016972 42680012	clr.w	obVelY(a0)
00016976 54280024	addq.b	#2,obRoutine(a0)
0001697a 217c00016d6e0004	move.l	#Map_Cat,obMap(a0)
00016982 317c22b00002	move.w	#ArtTile_SBZ_Caterkiller|Tile_Pal2,obGfx(a0)
00016988 0c380005fe10	cmpi.b	#id_SBZ,(v_zone).w
0001698e 6706	beq.s	.isscrapbrain
00016990 317c24ff0002	move.w	#ArtTile_MZ_SYZ_Caterkiller|Tile_Pal2,obGfx(a0)
00016996 022800030001	andi.b	#3,obRender(a0)
0001699c 002800040001	ori.b	#4,obRender(a0)
000169a2 116800010022	move.b	obRender(a0),obStatus(a0)
000169a8 117c00040018	move.b	#4,obPriority(a0)
000169ae 117c00080019	move.b	#8,obActWid(a0)
000169b4 117c000b0020	move.b	#$B,obColType(a0)
000169ba 34280008	move.w	obX(a0),d2
000169be 7a0c	moveq	#$C,d5
000169c0 082800000022	btst	#0,obStatus(a0)
000169c6 6702	beq.s	.noflip
000169c8 4445	neg.w	d5
000169ca 1c3c0004	move.b	#4,d6
000169ce 7600	moveq	#0,d3
000169d0 7804	moveq	#4,d4
000169d2 2448	movea.l	a0,a2
000169d4 7202	moveq	#2,d1
000169d6 4eb90000daa2	jsr	(FindNextFreeObj).l
000169dc 6654	bne.s	.fail
000169e4 13460024	move.b	d6,obRoutine(a1)
000169e8 5406	addq.b	#2,d6
000169ea 236800040004	move.l	obMap(a0),obMap(a1)
000169f0 336800020002	move.w	obGfx(a0),obGfx(a1)
000169f6 137c00050018	move.b	#5,obPriority(a1)
000169fc 137c00080019	move.b	#8,obActWid(a1)
00016a02 137c00cb0020	move.b	#$CB,obColType(a1)
00016a08 d445	add.w	d5,d2
00016a0a 33420008	move.w	d2,obX(a1)
00016a0e 3368000c000c	move.w	obY(a0),obY(a1)
00016a14 136800220022	move.b	obStatus(a0),obStatus(a1)
00016a1a 136800220001	move.b	obStatus(a0),obRender(a1)
00016a20 137c0008001a	move.b	#8,obFrame(a1)
00016a26 234a003c	move.l	a2,cat_parent(a1)
00016a2a 1344003c	move.b	d4,cat_parent(a1)
00016a2e 5804	addq.b	#4,d4
00016a30 2449	movea.l	a1,a2
00016a32 51c9ffa2	dbf	d1,Cat_Loop
00016a36 117c0007002a	move.b	#7,objoff_2A(a0)
00016a3c 4228003c	clr.b	cat_parent(a0)
00016a40 4a280022	tst.b	obStatus(a0)
00016a44 6b000250	bmi.w	loc_16C96
00016a48 7000	moveq	#0,d0
00016a4a 10280025	move.b	ob2ndRout(a0),d0
00016a4e 323b007a	move.w	Cat_Index2(pc,d0.w),d1
00016a52 4ebb1076	jsr	Cat_Index2(pc,d1.w)
00016a56 1228002b	move.b	objoff_2B(a0),d1
00016a5a 6a2a	bpl.s	.display
00016a5c 43f900016cee	lea	(Ani_Cat).l,a1
00016a62 10280026	move.b	obAngle(a0),d0
00016a66 0240007f	andi.w	#$7F,d0
00016a6a 58280026	addq.b	#4,obAngle(a0)
00016a6e 10310000	move.b	(a1,d0.w),d0
00016a72 6a08	bpl.s	.animate
00016a74 08a80007002b	bclr	#7,objoff_2B(a0)
00016a7a 600a	bra.s	.display
00016a7c 02010010	andi.b	#$10,d1
00016a80 d001	add.b	d1,d0
00016a82 1140001a	move.b	d0,obFrame(a0)
00016a86 30280008	move.w	obX(a0),d0
00016a8a 0240ff80	andi.w	#$FF80,d0
00016a8e 3238f700	move.w	(v_screenposx).w,d1
00016a92 04410080	subi.w	#128,d1
00016a96 0241ff80	andi.w	#$FF80,d1
00016a9a 9041	sub.w	d1,d0
00016a9c 0c400280	cmpi.w	#128+320+192,d0
00016aa0 62000008	bhi.w	Cat_ChkGone
00016aa4 4ef90000d604	jmp	(DisplaySprite).l
00016aaa 45f8fc00	lea	(v_objstate).w,a2
00016aae 7000	moveq	#0,d0
00016ab0 10280023	move.b	obRespawnNo(a0),d0
00016ab4 6706	beq.s	.delete
00016ab6 08b200070002	bclr	#7,2(a2,d0.w)
00016abc 117c000a0024	move.b	#$A,obRoutine(a0)
00016ac2 4e75	rts	
00016ac4 4ef90000d640	jmp	(DeleteObject).l
00016ace 5328002a	subq.b	#1,objoff_2A(a0)
00016ad2 6b02	bmi.s	.move
00016ad4 4e75	rts	
00016ad6 54280025	addq.b	#2,ob2ndRout(a0)
00016ada 117c0010002a	move.b	#$10,objoff_2A(a0)
00016ae0 317cff400010	move.w	#-$C0,obVelX(a0)
00016ae6 317c00400014	move.w	#$40,obInertia(a0)
00016aec 08680004002b	bchg	#4,objoff_2B(a0)
00016af2 6608	bne.s	loc_16AFC
00016af4 42680010	clr.w	obVelX(a0)
00016af8 44680014	neg.w	obInertia(a0)
00016afc 08e80007002b	bset	#7,objoff_2B(a0)
00016b02 5328002a	subq.b	#1,objoff_2A(a0)
00016b06 6b56	bmi.s	.loc_16B5E
00016b08 2f280008	move.l	obX(a0),-(sp)
00016b0c 24280008	move.l	obX(a0),d2
00016b10 30280010	move.w	obVelX(a0),d0
00016b14 082800000022	btst	#0,obStatus(a0)
00016b1a 6702	beq.s	.noflip
00016b1c 4440	neg.w	d0
00016b1e 48c0	ext.l	d0
00016b20 e180	asl.l	#8,d0
00016b22 d480	add.l	d0,d2
00016b24 21420008	move.l	d2,obX(a0)
00016b28 4eb900014e18	jsr	(ObjFloorDist).l
00016b2e 241f	move.l	(sp)+,d2
00016b30 0c41fff8	cmpi.w	#-8,d1
00016b34 6d3a	blt.s	.loc_16B70
00016b36 0c41000c	cmpi.w	#$C,d1
00016b3a 6c34	bge.s	.loc_16B70
00016b3c d368000c	add.w	d1,obY(a0)
00016b40 4842	swap	d2
00016b42 b4680008	cmp.w	obX(a0),d2
00016b46 6714	beq.s	.notmoving
00016b48 7000	moveq	#0,d0
00016b4a 1028003c	move.b	cat_parent(a0),d0
00016b4e 5228003c	addq.b	#1,cat_parent(a0)
00016b52 0228000f003c	andi.b	#$F,cat_parent(a0)
00016b58 1181002c	move.b	d1,objoff_2C(a0,d0.w)
00016b5c 4e75	rts	
00016b5e 55280025	subq.b	#2,ob2ndRout(a0)
00016b62 117c0007002a	move.b	#7,objoff_2A(a0)
00016b68 317c00000010	move.w	#0,obVelX(a0)
00016b6e 4e75	rts	
00016b70 21420008	move.l	d2,obX(a0)
00016b74 086800000022	bchg	#0,obStatus(a0)
00016b7a 116800220001	move.b	obStatus(a0),obRender(a0)
00016b80 7000	moveq	#0,d0
00016b82 1028003c	move.b	cat_parent(a0),d0
00016b86 11bc0080002c	move.b	#$80,objoff_2C(a0,d0.w)
00016b8c 5228003c	addq.b	#1,cat_parent(a0)
00016b90 0228000f003c	andi.b	#$F,cat_parent(a0)
00016b96 4e75	rts	
00016b98 2268003c	movea.l	cat_parent(a0),a1
00016b9c 1169002b002b	move.b	objoff_2B(a1),objoff_2B(a0)
00016ba2 6a26	bpl.s	Cat_BodySeg1
00016ba4 43f900016cee	lea	(Ani_Cat).l,a1
00016baa 10280026	move.b	obAngle(a0),d0
00016bae 0240007f	andi.w	#$7F,d0
00016bb2 58280026	addq.b	#4,obAngle(a0)
00016bb6 4a310004	tst.b	4(a1,d0.w)
00016bba 6a04	bpl.s	Cat_AniBody
00016bbc 58280026	addq.b	#4,obAngle(a0)
00016bc0 10310000	move.b	(a1,d0.w),d0
00016bc4 5000	addq.b	#8,d0
00016bc6 1140001a	move.b	d0,obFrame(a0)
00016bca 2268003c	movea.l	cat_parent(a0),a1
00016bce 4a280022	tst.b	obStatus(a0)
00016bd2 6b0000bc	bmi.w	loc_16C90
00016bd6 1169002b002b	move.b	objoff_2B(a1),objoff_2B(a0)
00016bdc 116900250025	move.b	ob2ndRout(a1),ob2ndRout(a0)
00016be2 67000080	beq.w	loc_16C64
00016be6 316900140014	move.w	obInertia(a1),obInertia(a0)
00016bec 30290010	move.w	obVelX(a1),d0
00016bf0 d0690014	add.w	obInertia(a1),d0
00016bf4 31400010	move.w	d0,obVelX(a0)
00016bf8 24280008	move.l	obX(a0),d2
00016bfc 2602	move.l	d2,d3
00016bfe 30280010	move.w	obVelX(a0),d0
00016c02 082800000022	btst	#0,obStatus(a0)
00016c08 6702	beq.s	loc_16C0C
00016c0a 4440	neg.w	d0
00016c0c 48c0	ext.l	d0
00016c0e e180	asl.l	#8,d0
00016c10 d480	add.l	d0,d2
00016c12 21420008	move.l	d2,obX(a0)
00016c16 4843	swap	d3
00016c18 b6680008	cmp.w	obX(a0),d3
00016c1c 6746	beq.s	loc_16C64
00016c1e 7000	moveq	#0,d0
00016c20 1028003c	move.b	cat_parent(a0),d0
00016c24 1231002c	move.b	objoff_2C(a1,d0.w),d1
00016c28 0c010080	cmpi.b	#$80,d1
00016c2c 6622	bne.s	loc_16C50
00016c2e 4843	swap	d3
00016c30 21430008	move.l	d3,obX(a0)
00016c34 1181002c	move.b	d1,objoff_2C(a0,d0.w)
00016c38 086800000022	bchg	#0,obStatus(a0)
00016c3e 116800220001	move.b	obStatus(a0),obRender(a0)
00016c44 5228003c	addq.b	#1,cat_parent(a0)
00016c48 0228000f003c	andi.b	#$F,cat_parent(a0)
00016c4e 6014	bra.s	loc_16C64
00016c50 4881	ext.w	d1
00016c52 d368000c	add.w	d1,obY(a0)
00016c56 5228003c	addq.b	#1,cat_parent(a0)
00016c5a 0228000f003c	andi.b	#$F,cat_parent(a0)
00016c60 1181002c	move.b	d1,objoff_2C(a0,d0.w)
00016c64 0c29000c0024	cmpi.b	#$C,obRoutine(a1)
00016c6a 6724	beq.s	loc_16C90
00016c72 6708	beq.s	.delete
00016c74 0c29000a0024	cmpi.b	#$A,obRoutine(a1)
00016c7a 6606	bne.s	.display
00016c7c 117c000a0024	move.b	#$A,obRoutine(a0)
00016c82 4ef90000d604	jmp	(DisplaySprite).l
00016c90 08e900070022	bset	#7,obStatus(a1)
00016c96 7000	moveq	#0,d0
00016c98 10280024	move.b	obRoutine(a0),d0
00016c9c 303b00e8	move.w	Cat_FragSpeed-2(pc,d0.w),d0
00016ca0 082800000022	btst	#0,obStatus(a0)
00016ca6 6702	beq.s	loc_16CAA
00016ca8 4440	neg.w	d0
00016caa 31400010	move.w	d0,obVelX(a0)
00016cae 317cfc000012	move.w	#-$400,obVelY(a0)
00016cb4 117c000c0024	move.b	#$C,obRoutine(a0)
00016cba 022800f8001a	andi.b	#$F8,obFrame(a0)
00016cc0 4eb90000d5b2	jsr	(ObjectFall).l
00016cc6 4a680012	tst.w	obVelY(a0)
00016cca 6b14	bmi.s	loc_16CE0
00016ccc 4eb900014e18	jsr	(ObjFloorDist).l
00016cd2 4a41	tst.w	d1
00016cd4 6a0a	bpl.s	loc_16CE0
00016cd6 d368000c	add.w	d1,obY(a0)
00016cda 317cfc000012	move.w	#-$400,obVelY(a0)
00016ce0 4a280001	tst.b	obRender(a0)
00016ce4 6a00fdc4	bpl.w	Cat_ChkGone
00016ce8 4ef90000d604	jmp	(DisplaySprite).l
00016e2e 7000	moveq	#0,d0
00016e30 10280024	move.b	obRoutine(a0),d0
00016e34 323b000c	move.w	Lamp_Index(pc,d0.w),d1
00016e38 4ebb1008	jsr	Lamp_Index(pc,d1.w)
00016e3c 4ef90000f6ac	jmp	(RememberState).l
00016e4a 54280024	addq.b	#2,obRoutine(a0)
00016e4e 217c000170f80004	move.l	#Map_Lamp,obMap(a0)
00016e56 317c07a00002	move.w	#ArtTile_Lamppost,obGfx(a0)
00016e5c 117c00040001	move.b	#4,obRender(a0)
00016e62 117c00080019	move.b	#8,obActWid(a0)
00016e68 117c00050018	move.b	#5,obPriority(a0)
00016e6e 45f8fc00	lea	(v_objstate).w,a2
00016e72 7000	moveq	#0,d0
00016e74 10280023	move.b	obRespawnNo(a0),d0
00016e78 08b200070002	bclr	#7,2(a2,d0.w)
00016e7e 083200000002	btst	#0,2(a2,d0.w)
00016e84 6614	bne.s	.red
00016e86 1238fe30	move.b	(v_lastlamp).w,d1
00016e8a 0201007f	andi.b	#$7F,d1
00016e8e 14280028	move.b	obSubtype(a0),d2
00016e92 0202007f	andi.b	#$7F,d2
00016e96 b202	cmp.b	d2,d1
00016e98 6514	blo.s	Lamp_Blue
00016e9a 08f200000002	bset	#0,2(a2,d0.w)
00016ea0 117c00040024	move.b	#4,obRoutine(a0)
00016ea6 117c0003001a	move.b	#3,obFrame(a0)
00016eac 4e75	rts	
00016eae 4a78fe08	tst.w	(v_debuguse).w
00016eb2 660000dc	bne.w	.donothing
00016eb6 4a38f7c8	tst.b	(f_playerctrl).w
00016eba 6b0000d4	bmi.w	.donothing
00016ebe 1238fe30	move.b	(v_lastlamp).w,d1
00016ec2 0201007f	andi.b	#$7F,d1
00016ec6 14280028	move.b	obSubtype(a0),d2
00016eca 0202007f	andi.b	#$7F,d2
00016ece b202	cmp.b	d2,d1
00016ed0 6520	blo.s	.chkhit
00016ed2 45f8fc00	lea	(v_objstate).w,a2
00016ed6 7000	moveq	#0,d0
00016ed8 10280023	move.b	obRespawnNo(a0),d0
00016edc 08f200000002	bset	#0,2(a2,d0.w)
00016ee2 117c00040024	move.b	#4,obRoutine(a0)
00016ee8 117c0003001a	move.b	#3,obFrame(a0)
00016eee 600000a0	bra.w	.donothing
00016ef2 3038d008	move.w	(v_player+obX).w,d0
00016ef6 90680008	sub.w	obX(a0),d0
00016efa 5040	addq.w	#8,d0
00016efc 0c400010	cmpi.w	#$10,d0
00016f00 6400008e	bhs.w	.donothing
00016f04 3038d00c	move.w	(v_player+obY).w,d0
00016f08 9068000c	sub.w	obY(a0),d0
00016f0c 06400040	addi.w	#$40,d0
00016f10 0c400068	cmpi.w	#$68,d0
00016f14 647a	bhs.s	.donothing
00016f16 303c00a1	move.w	#sfx_Lamppost,d0
00016f1a 4eb90000139c	jsr	(QueueSound2).l
00016f20 54280024	addq.b	#2,obRoutine(a0)
00016f24 4eb90000da8c	jsr	(FindFreeObj).l
00016f2a 664a	bne.s	.fail
00016f32 137c00060024	move.b	#6,obRoutine(a1)
00016f38 336800080030	move.w	obX(a0),lamp_origX(a1)
00016f3e 3368000c0032	move.w	obY(a0),lamp_origY(a1)
00016f44 046900180032	subi.w	#$18,lamp_origY(a1)
00016f4a 237c000170f80004	move.l	#Map_Lamp,obMap(a1)
00016f52 337c07a00002	move.w	#ArtTile_Lamppost,obGfx(a1)
00016f58 137c00040001	move.b	#4,obRender(a1)
00016f5e 137c00080019	move.b	#8,obActWid(a1)
00016f64 137c00040018	move.b	#4,obPriority(a1)
00016f6a 137c0002001a	move.b	#2,obFrame(a1)
00016f70 337c00200036	move.w	#$20,lamp_time(a1)
00016f76 117c0001001a	move.b	#1,obFrame(a0)
00016f7c 61000054	bsr.w	Lamp_StoreInfo
00016f80 45f8fc00	lea	(v_objstate).w,a2
00016f84 7000	moveq	#0,d0
00016f86 10280023	move.b	obRespawnNo(a0),d0
00016f8a 08f200000002	bset	#0,2(a2,d0.w)
00016f90 4e75	rts	
00016f92 4e75	rts	
00016f94 53680036	subq.w	#1,lamp_time(a0)
00016f98 6a06	bpl.s	.continue
00016f9a 117c00040024	move.b	#4,obRoutine(a0)
00016fa0 10280026	move.b	obAngle(a0),d0
00016fa4 042800100026	subi.b	#$10,obAngle(a0)
00016faa 04000040	subi.b	#$40,d0
00016fae 4eb9000029da	jsr	(CalcSine).l
00016fb4 c3fc0c00	muls.w	#$C00,d1
00016fb8 4841	swap	d1
00016fba d2680030	add.w	lamp_origX(a0),d1
00016fbe 31410008	move.w	d1,obX(a0)
00016fc2 c1fc0c00	muls.w	#$C00,d0
00016fc6 4840	swap	d0
00016fc8 d0680032	add.w	lamp_origY(a0),d0
00016fcc 3140000c	move.w	d0,obY(a0)
00016fd0 4e75	rts	
00016fd2 11e80028fe30	move.b	obSubtype(a0),(v_lastlamp).w
00016fd8 11f8fe30fe31	move.b	(v_lastlamp).w,(v_lastlamp+1).w
00016fde 31e80008fe32	move.w	obX(a0),(v_lamp_xpos).w
00016fe4 31e8000cfe34	move.w	obY(a0),(v_lamp_ypos).w
00016fea 31f8fe20fe36	move.w	(v_rings).w,(v_lamp_rings).w
00016ff0 11f8fe1bfe54	move.b	(v_lifecount).w,(v_lamp_lives).w
00016ff6 21f8fe22fe38	move.l	(v_time).w,(v_lamp_time).w
00016ffc 11f8f742fe3c	move.b	(v_dle_routine).w,(v_lamp_dle).w
00017002 31f8f72efe3e	move.w	(v_limitbtm2).w,(v_lamp_limitbtm).w
00017008 31f8f700fe40	move.w	(v_screenposx).w,(v_lamp_scrx).w
0001700e 31f8f704fe42	move.w	(v_screenposy).w,(v_lamp_scry).w
00017014 31f8f708fe44	move.w	(v_bgscreenposx).w,(v_lamp_bgscrx).w
0001701a 31f8f70cfe46	move.w	(v_bgscreenposy).w,(v_lamp_bgscry).w
00017020 31f8f710fe48	move.w	(v_bg2screenposx).w,(v_lamp_bg2scrx).w
00017026 31f8f714fe4a	move.w	(v_bg2screenposy).w,(v_lamp_bg2scry).w
0001702c 31f8f718fe4c	move.w	(v_bg3screenposx).w,(v_lamp_bg3scrx).w
00017032 31f8f71cfe4e	move.w	(v_bg3screenposy).w,(v_lamp_bg3scry).w
00017038 31f8f648fe50	move.w	(v_waterpos2).w,(v_lamp_wtrpos).w
0001703e 11f8f64dfe52	move.b	(v_wtr_routine).w,(v_lamp_wtrrout).w
00017044 11f8f64efe53	move.b	(f_wtr_state).w,(v_lamp_wtrstat).w
0001704a 4e75	rts	
0001704c 11f8fe31fe30	move.b	(v_lastlamp+1).w,(v_lastlamp).w
00017052 31f8fe32d008	move.w	(v_lamp_xpos).w,(v_player+obX).w
00017058 31f8fe34d00c	move.w	(v_lamp_ypos).w,(v_player+obY).w
0001705e 31f8fe36fe20	move.w	(v_lamp_rings).w,(v_rings).w
00017064 11f8fe54fe1b	move.b	(v_lamp_lives).w,(v_lifecount).w
0001706a 4278fe20	clr.w	(v_rings).w
0001706e 4238fe1b	clr.b	(v_lifecount).w
00017072 21f8fe38fe22	move.l	(v_lamp_time).w,(v_time).w
00017078 11fc003bfe25	move.b	#59,(v_timecent).w
0001707e 5338fe24	subq.b	#1,(v_timesec).w
00017082 11f8fe3cf742	move.b	(v_lamp_dle).w,(v_dle_routine).w
00017088 11f8fe52f64d	move.b	(v_lamp_wtrrout).w,(v_wtr_routine).w
0001708e 31f8fe3ef72e	move.w	(v_lamp_limitbtm).w,(v_limitbtm2).w
00017094 31f8fe3ef726	move.w	(v_lamp_limitbtm).w,(v_limitbtm1).w
0001709a 31f8fe40f700	move.w	(v_lamp_scrx).w,(v_screenposx).w
000170a0 31f8fe42f704	move.w	(v_lamp_scry).w,(v_screenposy).w
000170a6 31f8fe44f708	move.w	(v_lamp_bgscrx).w,(v_bgscreenposx).w
000170ac 31f8fe46f70c	move.w	(v_lamp_bgscry).w,(v_bgscreenposy).w
000170b2 31f8fe48f710	move.w	(v_lamp_bg2scrx).w,(v_bg2screenposx).w
000170b8 31f8fe4af714	move.w	(v_lamp_bg2scry).w,(v_bg2screenposy).w
000170be 31f8fe4cf718	move.w	(v_lamp_bg3scrx).w,(v_bg3screenposx).w
000170c4 31f8fe4ef71c	move.w	(v_lamp_bg3scry).w,(v_bg3screenposy).w
000170ca 0c380001fe10	cmpi.b	#id_LZ,(v_zone).w
000170d0 6612	bne.s	.notlabyrinth
000170d2 31f8fe50f648	move.w	(v_lamp_wtrpos).w,(v_waterpos2).w
000170d8 11f8fe52f64d	move.b	(v_lamp_wtrrout).w,(v_wtr_routine).w
000170de 11f8fe53f64e	move.b	(v_lamp_wtrstat).w,(f_wtr_state).w
000170e4 4a38fe30	tst.b	(v_lastlamp).w
000170e8 6a0c	bpl.s	.return
000170ea 3038fe32	move.w	(v_lamp_xpos).w,d0
000170ee 044000a0	subi.w	#320/2,d0
000170f2 31c0f728	move.w	d0,(v_limitleft2).w
000170f6 4e75	rts	
0001715e 7000	moveq	#0,d0
00017160 10280024	move.b	obRoutine(a0),d0
00017164 323b0006	move.w	Bonus_Index(pc,d0.w),d1
00017168 4efb1002	jmp	Bonus_Index(pc,d1.w)
00017170 7410	moveq	#$10,d2
00017172 3602	move.w	d2,d3
00017174 d643	add.w	d3,d3
00017176 43f8d000	lea	(v_player).w,a1
0001717a 30290008	move.w	obX(a1),d0
0001717e 90680008	sub.w	obX(a0),d0
00017182 d042	add.w	d2,d0
00017184 b043	cmp.w	d3,d0
00017186 6466	bhs.s	.chkdel
00017188 3229000c	move.w	obY(a1),d1
0001718c 9268000c	sub.w	obY(a0),d1
00017190 d242	add.w	d2,d1
00017192 b243	cmp.w	d3,d1
00017194 6458	bhs.s	.chkdel
00017196 4a78fe08	tst.w	(v_debuguse).w
0001719a 6652	bne.s	.chkdel
0001719c 4a38f7cd	tst.b	(f_bigring).w
000171a0 664c	bne.s	.chkdel
000171a2 54280024	addq.b	#2,obRoutine(a0)
000171a6 217c000172480004	move.l	#Map_Bonus,obMap(a0)
000171ae 317c84b60002	move.w	#ArtTile_Hidden_Points|Tile_Prio,obGfx(a0)
000171b4 002800040001	ori.b	#4,obRender(a0)
000171ba 117c00000018	move.b	#0,obPriority(a0)
000171c0 117c00100019	move.b	#$10,obActWid(a0)
000171c6 11680028001a	move.b	obSubtype(a0),obFrame(a0)
000171cc 317c00770030	move.w	#119,bonus_timelen(a0)
000171d2 303c00c9	move.w	#sfx_Bonus,d0
000171d6 4eb90000139c	jsr	(QueueSound2).l
000171dc 7000	moveq	#0,d0
000171de 10280028	move.b	obSubtype(a0),d0
000171e2 d040	add.w	d0,d0
000171e4 303b002c	move.w	.points(pc,d0.w),d0
000171e8 4eb90001c68c	jsr	(AddPoints).l
000171ee 30280008	move.w	obX(a0),d0
000171f2 0240ff80	andi.w	#$FF80,d0
000171f6 3238f700	move.w	(v_screenposx).w,d1
000171fa 04410080	subi.w	#128,d1
000171fe 0241ff80	andi.w	#$FF80,d1
00017202 9041	sub.w	d1,d0
00017204 0c400280	cmpi.w	#128+320+192,d0
00017208 6202	bhi.s	.delete
0001720a 4e75	rts	
0001720c 4ef90000d640	jmp	(DeleteObject).l
0001721a 53680030	subq.w	#1,bonus_timelen(a0)
0001721e 6b22	bmi.s	Bonus_Display_Delete
00017220 30280008	move.w	obX(a0),d0
00017224 0240ff80	andi.w	#$FF80,d0
00017228 3238f700	move.w	(v_screenposx).w,d1
0001722c 04410080	subi.w	#128,d1
00017230 0241ff80	andi.w	#$FF80,d1
00017234 9041	sub.w	d1,d0
00017236 0c400280	cmpi.w	#128+320+192,d0
0001723a 6206	bhi.s	Bonus_Display_Delete
0001723c 4ef90000d604	jmp	(DisplaySprite).l
00017242 4ef90000d640	jmp	(DeleteObject).l
00017264 7000	moveq	#0,d0
00017266 10280024	move.b	obRoutine(a0),d0
0001726a 323b0006	move.w	Cred_Index(pc,d0.w),d1
0001726e 4efb1002	jmp	Cred_Index(pc,d1.w)
00017276 54280024	addq.b	#2,obRoutine(a0)
0001727a 317c01200008	move.w	#$120,obX(a0)
00017280 317c00f0000a	move.w	#$F0,obScreenY(a0)
00017286 217c000172e20004	move.l	#Map_Cred,obMap(a0)
0001728e 317c05a00002	move.w	#ArtTile_Credits_Font,obGfx(a0)
00017294 3038fff4	move.w	(v_creditsnum).w,d0
00017298 1140001a	move.b	d0,obFrame(a0)
0001729c 117c00000001	move.b	#0,obRender(a0)
000172a2 117c00000018	move.b	#0,obPriority(a0)
000172a8 0c380004f600	cmpi.b	#id_Title,(v_gamemode).w
000172ae 662c	bne.s	Cred_Display
000172b0 317c00a60002	move.w	#ArtTile_Sonic_Team_Font,obGfx(a0)
000172b6 117c000a001a	move.b	#$A,obFrame(a0)
000172bc 4a38ffe3	tst.b	(f_creditscheat).w
000172c0 671a	beq.s	Cred_Display
000172c2 0c380072f604	cmpi.b	#btnABC+btnDn,(v_jpadhold1).w
000172c8 6612	bne.s	Cred_Display
000172ca 31fc0eeefbc0	move.w	#cWhite,(v_palette_fading+$40).w
000172d0 31fc0880fbc2	move.w	#$880,(v_palette_fading+$42).w
000172d6 4ef90000d640	jmp	(DeleteObject).l
000172dc 4ef90000d604	jmp	(DisplaySprite).l
00017700 7000	moveq	#0,d0
00017702 10280024	move.b	obRoutine(a0),d0
00017706 323b0006	move.w	BGHZ_Index(pc,d0.w),d1
0001770a 4efb1002	jmp	BGHZ_Index(pc,d1.w)
0001771c 45f900017716	lea	(BGHZ_ObjData).l,a2
00017722 2248	movea.l	a0,a1
00017724 7202	moveq	#2,d1
00017726 6008	bra.s	BGHZ_LoadBoss
00017728 4eb90000daa2	jsr	(FindNextFreeObj).l
0001772e 6642	bne.s	loc_17772
00017730 135a0024	move.b	(a2)+,obRoutine(a1)
0001773a 336800080008	move.w	obX(a0),obX(a1)
00017740 3368000c000c	move.w	obY(a0),obY(a1)
00017746 237c00017d0c0004	move.l	#Map_Eggman,obMap(a1)
0001774e 337c04000002	move.w	#ArtTile_Eggman,obGfx(a1)
00017754 137c00040001	move.b	#4,obRender(a1)
0001775a 137c00200019	move.b	#$20,obActWid(a1)
00017760 137c00030018	move.b	#3,obPriority(a1)
00017766 135a001c	move.b	(a2)+,obAnim(a1)
0001776a 23480034	move.l	a0,objoff_34(a1)
0001776e 51c9ffb8	dbf	d1,BGHZ_Loop
00017772 316800080030	move.w	obX(a0),obBossX(a0)
00017778 3168000c0038	move.w	obY(a0),obBossY(a0)
0001777e 117c000f0020	move.b	#$F,obColType(a0)
00017784 117c00080021	move.b	#8,obBossHits(a0)
0001778a 7000	moveq	#0,d0
0001778c 10280025	move.b	ob2ndRout(a0),d0
00017790 323b002a	move.w	BGHZ_ShipIndex(pc,d0.w),d1
00017794 4ebb1026	jsr	BGHZ_ShipIndex(pc,d1.w)
00017798 43f900017cbc	lea	(Ani_Eggman).l,a1
0001779e 4eb90000a718	jsr	(AnimateSprite).l
000177a4 10280022	move.b	obStatus(a0),d0
000177a8 02000003	andi.b	#3,d0
000177ac 022800fc0001	andi.b	#$FC,obRender(a0)
000177b2 81280001	or.b	d0,obRender(a0)
000177b6 4ef90000d604	jmp	(DisplaySprite).l
000177ca 317c01000012	move.w	#$100,obVelY(a0)
000177d0 610000d2	bsr.w	BossMove
000177d4 0c6803380038	cmpi.w	#boss_ghz_y+$38,obBossY(a0)
000177da 660a	bne.s	loc_177E6
000177dc 317c00000012	move.w	#0,obVelY(a0)
000177e2 54280025	addq.b	#2,ob2ndRout(a0)
000177e6 1028003f	move.b	objoff_3F(a0),d0
000177ea 4eb9000029da	jsr	(CalcSine).l
000177f0 ec40	asr.w	#6,d0
000177f2 d0680038	add.w	obBossY(a0),d0
000177f6 3140000c	move.w	d0,obY(a0)
000177fa 316800300008	move.w	obBossX(a0),obX(a0)
00017800 5428003f	addq.b	#2,objoff_3F(a0)
00017804 0c2800080025	cmpi.b	#8,ob2ndRout(a0)
0001780a 643e	bhs.s	locret_1784A
0001780c 4a280022	tst.b	obStatus(a0)
00017810 6b3a	bmi.s	loc_1784C
00017812 4a280020	tst.b	obColType(a0)
00017816 6632	bne.s	locret_1784A
00017818 4a28003e	tst.b	obBossFlash(a0)
0001781c 6610	bne.s	BGHZ_ShipFlash
0001781e 117c0020003e	move.b	#$20,obBossFlash(a0)
00017824 303c00ac	move.w	#sfx_HitBoss,d0
00017828 4eb90000139c	jsr	(QueueSound2).l
0001782e 43f8fb22	lea	(v_palette+$22).w,a1
00017832 7000	moveq	#0,d0
00017834 4a51	tst.w	(a1)
00017836 6604	bne.s	loc_1783C
00017838 303c0eee	move.w	#cWhite,d0
0001783c 3280	move.w	d0,(a1)
0001783e 5328003e	subq.b	#1,obBossFlash(a0)
00017842 6606	bne.s	locret_1784A
00017844 117c000f0020	move.b	#$F,obColType(a0)
0001784a 4e75	rts	
0001784c 7064	moveq	#100,d0
0001784e 61004e3c	bsr.w	AddPoints
00017852 117c00080025	move.b	#8,ob2ndRout(a0)
00017858 317c00b3003c	move.w	#$B3,objoff_3C(a0)
0001785e 4e75	rts	
00017860 1038fe0f	move.b	(v_vblank_byte).w,d0
00017864 02000007	andi.b	#7,d0
00017868 6638	bne.s	locret_178A2
0001786a 4eb90000da8c	jsr	(FindFreeObj).l
00017870 6630	bne.s	locret_178A2
00017878 336800080008	move.w	obX(a0),obX(a1)
0001787e 3368000c000c	move.w	obY(a0),obY(a1)
00017884 4eb9000029b4	jsr	(RandomNumber).l
0001788a 3200	move.w	d0,d1
0001788c 7200	moveq	#0,d1
0001788e 1200	move.b	d0,d1
00017890 e409	lsr.b	#2,d1
00017892 04410020	subi.w	#$20,d1
00017896 d3690008	add.w	d1,obX(a1)
0001789a e048	lsr.w	#8,d0
0001789c e608	lsr.b	#3,d0
0001789e d169000c	add.w	d0,obY(a1)
000178a2 4e75	rts	
000178a4 24280030	move.l	obBossX(a0),d2
000178a8 26280038	move.l	obBossY(a0),d3
000178ac 30280010	move.w	obVelX(a0),d0
000178b0 48c0	ext.l	d0
000178b2 e180	asl.l	#8,d0
000178b4 d480	add.l	d0,d2
000178b6 30280012	move.w	obVelY(a0),d0
000178ba 48c0	ext.l	d0
000178bc e180	asl.l	#8,d0
000178be d680	add.l	d0,d3
000178c0 21420030	move.l	d2,obBossX(a0)
000178c4 21430038	move.l	d3,obBossY(a0)
000178c8 4e75	rts	
000178ca 317cff000010	move.w	#-$100,obVelX(a0)
000178d0 317cffc00012	move.w	#-$40,obVelY(a0)
000178d6 6100ffcc	bsr.w	BossMove
000178da 0c682a000030	cmpi.w	#boss_ghz_x+$A0,obBossX(a0)
000178e0 6634	bne.s	loc_17916
000178e2 317c00000010	move.w	#0,obVelX(a0)
000178e8 317c00000012	move.w	#0,obVelY(a0)
000178ee 54280025	addq.b	#2,ob2ndRout(a0)
000178f2 4eb90000daa2	jsr	(FindNextFreeObj).l
000178f8 6616	bne.s	loc_17910
00017900 336800300008	move.w	obBossX(a0),obX(a1)
00017906 33680038000c	move.w	obBossY(a0),obY(a1)
0001790c 23480034	move.l	a0,objoff_34(a1)
00017910 317c0077003c	move.w	#$77,objoff_3C(a0)
00017916 6000fece	bra.w	loc_177E6
0001791a 5368003c	subq.w	#1,objoff_3C(a0)
0001791e 6a24	bpl.s	BGHZ_Reverse
00017920 54280025	addq.b	#2,ob2ndRout(a0)
00017924 317c003f003c	move.w	#$40-1,objoff_3C(a0)
0001792a 317c01000010	move.w	#$100,obVelX(a0)
00017930 0c682a000030	cmpi.w	#boss_ghz_x+$A0,obBossX(a0)
00017936 660c	bne.s	BGHZ_Reverse
00017938 317c007f003c	move.w	#($40*2)-1,objoff_3C(a0)
0001793e 317c00400010	move.w	#$40,obVelX(a0)
00017944 082800000022	btst	#0,obStatus(a0)
0001794a 6604	bne.s	loc_17950
0001794c 44680010	neg.w	obVelX(a0)
00017950 6000fe94	bra.w	loc_177E6
00017954 5368003c	subq.w	#1,objoff_3C(a0)
00017958 6b06	bmi.s	loc_17960
0001795a 6100ff48	bsr.w	BossMove
0001795e 6016	bra.s	loc_17976
00017960 086800000022	bchg	#0,obStatus(a0)
00017966 317c003f003c	move.w	#$40-1,objoff_3C(a0)
0001796c 55280025	subq.b	#2,ob2ndRout(a0)
00017970 317c00000010	move.w	#0,obVelX(a0)
00017976 6000fe6e	bra.w	loc_177E6
0001797a 5368003c	subq.w	#1,objoff_3C(a0)
0001797e 6b04	bmi.s	loc_17984
00017980 6000fede	bra.w	BossDefeated
00017984 08e800000022	bset	#0,obStatus(a0)
0001798a 08a800070022	bclr	#7,obStatus(a0)
00017990 42680010	clr.w	obVelX(a0)
00017994 54280025	addq.b	#2,ob2ndRout(a0)
00017998 317cffda003c	move.w	#-$26,objoff_3C(a0)
0001799e 4a38f7a7	tst.b	(v_bossstatus).w
000179a2 6606	bne.s	locret_179AA
000179a4 11fc0001f7a7	move.b	#1,(v_bossstatus).w
000179aa 4e75	rts	
000179ac 5268003c	addq.w	#1,objoff_3C(a0)
000179b0 670a	beq.s	loc_179BC
000179b2 6a0e	bpl.s	loc_179C2
000179b4 066800180012	addi.w	#$18,obVelY(a0)
000179ba 6032	bra.s	loc_179EE
000179bc 42680012	clr.w	obVelY(a0)
000179c0 602c	bra.s	loc_179EE
000179c2 0c680030003c	cmpi.w	#$30,objoff_3C(a0)
000179c8 6510	blo.s	loc_179DA
000179ca 6714	beq.s	loc_179E0
000179cc 0c680038003c	cmpi.w	#$38,objoff_3C(a0)
000179d2 651a	blo.s	loc_179EE
000179d4 54280025	addq.b	#2,ob2ndRout(a0)
000179d8 6014	bra.s	loc_179EE
000179da 51680012	subq.w	#8,obVelY(a0)
000179de 600e	bra.s	loc_179EE
000179e0 42680012	clr.w	obVelY(a0)
000179e4 303c0081	move.w	#bgm_GHZ,d0
000179e8 4eb900001396	jsr	(QueueSound1).l
000179ee 6100feb4	bsr.w	BossMove
000179f2 6000fdf2	bra.w	loc_177E6
000179f6 317c04000010	move.w	#$400,obVelX(a0)
000179fc 317cffc00012	move.w	#-$40,obVelY(a0)
00017a02 0c782ac0f72a	cmpi.w	#boss_ghz_end,(v_limitright2).w
00017a08 6706	beq.s	loc_17A10
00017a0a 5478f72a	addq.w	#2,(v_limitright2).w
00017a0e 6006	bra.s	loc_17A16
00017a10 4a280001	tst.b	obRender(a0)
00017a14 6a08	bpl.s	BGHZ_ShipDel
00017a16 6100fe8c	bsr.w	BossMove
00017a1a 6000fdca	bra.w	loc_177E6
00017a1e 4ef90000d640	jmp	(DeleteObject).l
00017a24 7000	moveq	#0,d0
00017a26 7201	moveq	#1,d1
00017a28 22680034	movea.l	objoff_34(a0),a1
00017a2c 10290025	move.b	ob2ndRout(a1),d0
00017a30 5900	subq.b	#4,d0
00017a32 660a	bne.s	loc_17A3E
00017a34 0c692a000030	cmpi.w	#boss_ghz_x+$A0,obBossX(a1)
00017a3a 660a	bne.s	loc_17A46
00017a3c 7204	moveq	#4,d1
00017a3e 5d00	subq.b	#6,d0
00017a40 6b04	bmi.s	loc_17A46
00017a42 720a	moveq	#$A,d1
00017a44 6014	bra.s	loc_17A5A
00017a46 4a290020	tst.b	obColType(a1)
00017a4a 6604	bne.s	loc_17A50
00017a4c 7205	moveq	#5,d1
00017a4e 600a	bra.s	loc_17A5A
00017a50 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
00017a56 6502	blo.s	loc_17A5A
00017a58 7204	moveq	#4,d1
00017a5a 1141001c	move.b	d1,obAnim(a0)
00017a5e 5500	subq.b	#2,d0
00017a60 660c	bne.s	BGHZ_FaceDisp
00017a62 117c0006001c	move.b	#6,obAnim(a0)
00017a68 4a280001	tst.b	obRender(a0)
00017a6c 6a02	bpl.s	BGHZ_FaceDel
00017a6e 603a	bra.s	BGHZ_Display
00017a70 4ef90000d640	jmp	(DeleteObject).l
00017a76 117c0007001c	move.b	#7,obAnim(a0)
00017a7c 22680034	movea.l	objoff_34(a0),a1
00017a80 0c29000c0025	cmpi.b	#$C,ob2ndRout(a1)
00017a86 660e	bne.s	loc_17A96
00017a88 117c000b001c	move.b	#$B,obAnim(a0)
00017a8e 4a280001	tst.b	obRender(a0)
00017a92 6a10	bpl.s	BGHZ_FlameDel
00017a94 600c	bra.s	BGHZ_FlameDisp
00017a96 30290010	move.w	obVelX(a1),d0
00017a9a 6706	beq.s	BGHZ_FlameDisp
00017a9c 117c0008001c	move.b	#8,obAnim(a0)
00017aa2 6006	bra.s	BGHZ_Display
00017aa4 4ef90000d640	jmp	(DeleteObject).l
00017aaa 22680034	movea.l	objoff_34(a0),a1
00017aae 316900080008	move.w	obX(a1),obX(a0)
00017ab4 3169000c000c	move.w	obY(a1),obY(a0)
00017aba 116900220022	move.b	obStatus(a1),obStatus(a0)
00017ac0 43f900017cbc	lea	(Ani_Eggman).l,a1
00017ac6 4eb90000a718	jsr	(AnimateSprite).l
00017acc 10280022	move.b	obStatus(a0),d0
00017ad0 02000003	andi.b	#3,d0
00017ad4 022800fc0001	andi.b	#$FC,obRender(a0)
00017ada 81280001	or.b	d0,obRender(a0)
00017ade 4ef90000d604	jmp	(DisplaySprite).l
00017ae4 7000	moveq	#0,d0
00017ae6 10280024	move.b	obRoutine(a0),d0
00017aea 323b0006	move.w	GBall_Index(pc,d0.w),d1
00017aee 4efb1002	jmp	GBall_Index(pc,d1.w)
00017afc 54280024	addq.b	#2,obRoutine(a0)
00017b00 317c40800026	move.w	#$4080,obAngle(a0)
00017b06 317cfe00003e	move.w	#-$200,objoff_3E(a0)
00017b0c 217c00017dd40004	move.l	#Map_BossItems,obMap(a0)
00017b14 317c046c0002	move.w	#ArtTile_Eggman_Weapons,obGfx(a0)
00017b1a 45e80028	lea	obSubtype(a0),a2
00017b1e 14fc0000	move.b	#0,(a2)+
00017b22 7205	moveq	#5,d1
00017b24 2248	movea.l	a0,a1
00017b26 6038	bra.s	loc_17B60
00017b28 4eb90000daa2	jsr	(FindNextFreeObj).l
00017b2e 665a	bne.s	GBall_MakeBall
00017b30 336800080008	move.w	obX(a0),obX(a1)
00017b36 3368000c000c	move.w	obY(a0),obY(a1)
00017b42 137c00060024	move.b	#6,obRoutine(a1)
00017b48 237c00007c480004	move.l	#Map_Swing_GHZ,obMap(a1)
00017b50 337c03800002	move.w	#ArtTile_GHZ_MZ_Swing,obGfx(a1)
00017b56 137c0001001a	move.b	#1,obFrame(a1)
00017b5c 52280028	addq.b	#1,obSubtype(a0)
00017b60 3a09	move.w	a1,d5
00017b62 0445d000	subi.w	#v_objspace&$FFFF,d5
00017b66 ec4d	lsr.w	#object_size_bits,d5
00017b68 0245007f	andi.w	#$7F,d5
00017b6c 14c5	move.b	d5,(a2)+
00017b6e 137c00040001	move.b	#4,obRender(a1)
00017b74 137c00080019	move.b	#8,obActWid(a1)
00017b7a 137c00060018	move.b	#6,obPriority(a1)
00017b80 236800340034	move.l	objoff_34(a0),objoff_34(a1)
00017b86 51c9ffa0	dbf	d1,GBall_MakeLinks
00017b8a 137c00080024	move.b	#8,obRoutine(a1)
00017b90 237c000081aa0004	move.l	#Map_GBall,obMap(a1)
00017b98 337c43aa0002	move.w	#ArtTile_GHZ_Giant_Ball|Tile_Pal3,obGfx(a1)
00017b9e 137c0001001a	move.b	#1,obFrame(a1)
00017ba4 137c00050018	move.b	#5,obPriority(a1)
00017baa 137c00810020	move.b	#$81,obColType(a1)
00017bb0 4e75	rts	
00017bb8 47f900017bb2	lea	(GBall_PosData).l,a3
00017bbe 45e80028	lea	obSubtype(a0),a2
00017bc2 7c00	moveq	#0,d6
00017bc4 1c1a	move.b	(a2)+,d6
00017bc6 7800	moveq	#0,d4
00017bc8 181a	move.b	(a2)+,d4
00017bca ed4c	lsl.w	#object_size_bits,d4
00017bcc 068400ffd000	addi.l	#v_objspace&$FFFFFF,d4
00017bd2 2244	movea.l	d4,a1
00017bd4 101b	move.b	(a3)+,d0
00017bd6 b029003c	cmp.b	objoff_3C(a1),d0
00017bda 6704	beq.s	loc_17BE0
00017bdc 5229003c	addq.b	#1,objoff_3C(a1)
00017be0 51ceffe4	dbf	d6,loc_17BC6
00017be4 b029003c	cmp.b	objoff_3C(a1),d0
00017be8 6610	bne.s	loc_17BFA
00017bea 22680034	movea.l	objoff_34(a0),a1
00017bee 0c2900060025	cmpi.b	#6,ob2ndRout(a1)
00017bf4 6604	bne.s	loc_17BFA
00017bf6 54280024	addq.b	#2,obRoutine(a0)
00017bfa 0c6800200032	cmpi.w	#$20,objoff_32(a0)
00017c00 6704	beq.s	GBall_Display
00017c02 52680032	addq.w	#1,objoff_32(a0)
00017c06 61000022	bsr.w	sub_17C2A
00017c0a 10280026	move.b	obAngle(a0),d0
00017c0e 4eb900007bba	jsr	(Swing_Move2).l
00017c14 4ef90000d604	jmp	(DisplaySprite).l
00017c1a 6100000e	bsr.w	sub_17C2A
00017c1e 4eb900007b7a	jsr	(Obj48_Move).l
00017c24 4ef90000d604	jmp	(DisplaySprite).l
00017c2a 22680034	movea.l	objoff_34(a0),a1
00017c2e 06280020001b	addi.b	#$20,obAniFrame(a0)
00017c34 6406	bcc.s	loc_17C3C
00017c36 08680000001a	bchg	#0,obFrame(a0)
00017c3c 31690008003a	move.w	obX(a1),objoff_3A(a0)
00017c42 3029000c	move.w	obY(a1),d0
00017c46 d0680032	add.w	objoff_32(a0),d0
00017c4a 31400038	move.w	d0,objoff_38(a0)
00017c4e 116900220022	move.b	obStatus(a1),obStatus(a0)
00017c54 4a290022	tst.b	obStatus(a1)
00017c58 6a0c	bpl.s	locret_17C66
00017c60 117c00000024	move.b	#0,obRoutine(a0)
00017c66 4e75	rts	
00017c68 22680034	movea.l	objoff_34(a0),a1
00017c6c 4a290022	tst.b	obStatus(a1)
00017c70 6a0c	bpl.s	GBall_Display3
00017c78 117c00000024	move.b	#0,obRoutine(a0)
00017c7e 4ef90000d604	jmp	(DisplaySprite).l
00017c84 7000	moveq	#0,d0
00017c86 4a28001a	tst.b	obFrame(a0)
00017c8a 6602	bne.s	GBall_Vanish
00017c8c 5200	addq.b	#1,d0
00017c8e 1140001a	move.b	d0,obFrame(a0)
00017c92 22680034	movea.l	objoff_34(a0),a1
00017c96 4a290022	tst.b	obStatus(a1)
00017c9a 6a1a	bpl.s	GBall_Display4
00017c9c 117c00000020	move.b	#0,obColType(a0)
00017ca2 6100fbbc	bsr.w	BossDefeated
00017ca6 5328003c	subq.b	#1,objoff_3C(a0)
00017caa 6a0a	bpl.s	GBall_Display4
00017cac 10bc003f	move.b	#id_Explosion,obID(a0)
00017cb0 117c00000024	move.b	#0,obRoutine(a0)
00017cb6 4ef90000d604	jmp	(DisplaySprite).l
00017e36 7000	moveq	#0,d0
00017e38 10280024	move.b	obRoutine(a0),d0
00017e3c 323b0006	move.w	BossLabyrinth_Index(pc,d0.w),d1
00017e40 4efb1002	jmp	BossLabyrinth_Index(pc,d1.w)
00017e52 317c1e100008	move.w	#boss_lz_x+$30,obX(a0)
00017e58 317c05c0000c	move.w	#boss_lz_y+$500,obY(a0)
00017e5e 316800080030	move.w	obX(a0),obBossX(a0)
00017e64 3168000c0038	move.w	obY(a0),obBossY(a0)
00017e6a 117c000f0020	move.b	#$F,obColType(a0)
00017e70 117c00080021	move.b	#8,obBossHits(a0)
00017e76 117c00040018	move.b	#4,obPriority(a0)
00017e7c 45faffce	lea	BossLabyrinth_ObjData(pc),a2
00017e80 2248	movea.l	a0,a1
00017e82 7202	moveq	#2,d1
00017e84 601a	bra.s	BossLabyrinth_LoadBoss
00017e86 4eb90000daa2	jsr	(FindNextFreeObj).l
00017e8c 664c	bne.s	BossLabyrinth_ShipMain
00017e94 336800080008	move.w	obX(a0),obX(a1)
00017e9a 3368000c000c	move.w	obY(a0),obY(a1)
00017ea0 08a800000022	bclr	#0,obStatus(a0)
00017ea6 42290025	clr.b	ob2ndRout(a1)
00017eaa 135a0024	move.b	(a2)+,obRoutine(a1)
00017eae 135a001c	move.b	(a2)+,obAnim(a1)
00017eb2 136800180018	move.b	obPriority(a0),obPriority(a1)
00017eb8 237c00017d0c0004	move.l	#Map_Eggman,obMap(a1)
00017ec0 337c04000002	move.w	#ArtTile_Eggman,obGfx(a1)
00017ec6 137c00040001	move.b	#4,obRender(a1)
00017ecc 137c00200019	move.b	#$20,obActWid(a1)
00017ed2 23480034	move.l	a0,objoff_34(a1)
00017ed6 51c9ffae	dbf	d1,BossLabyrinth_Loop
00017eda 43f8d000	lea	(v_player).w,a1
00017ede 7000	moveq	#0,d0
00017ee0 10280025	move.b	ob2ndRout(a0),d0
00017ee4 323b0028	move.w	BossLabyrinth_ShipIndex(pc,d0.w),d1
00017ee8 4ebb1024	jsr	BossLabyrinth_ShipIndex(pc,d1.w)
00017eec 43f900017cbc	lea	(Ani_Eggman).l,a1
00017ef2 4eb90000a718	jsr	(AnimateSprite).l
00017ef8 7003	moveq	#3,d0
00017efa c0280022	and.b	obStatus(a0),d0
00017efe 022800fc0001	andi.b	#$FC,obRender(a0)
00017f04 81280001	or.b	d0,obRender(a0)
00017f08 4ef90000d604	jmp	(DisplaySprite).l
00017f1e 30290008	move.w	obX(a1),d0
00017f22 0c401da0	cmpi.w	#boss_lz_x-$40,d0
00017f26 6510	blo.s	loc_17F38
00017f28 317cfe800012	move.w	#-$180,obVelY(a0)
00017f2e 317c00600010	move.w	#$60,obVelX(a0)
00017f34 54280025	addq.b	#2,ob2ndRout(a0)
00017f38 6100f96a	bsr.w	BossMove
00017f3c 31680038000c	move.w	obBossY(a0),obY(a0)
00017f42 316800300008	move.w	obBossX(a0),obX(a0)
00017f48 4a28003d	tst.b	objoff_3D(a0)
00017f4c 6640	bne.s	loc_17F8E
00017f4e 4a280022	tst.b	obStatus(a0)
00017f52 6b3e	bmi.s	loc_17F92
00017f54 4a280020	tst.b	obColType(a0)
00017f58 6632	bne.s	locret_17F8C
00017f5a 4a28003e	tst.b	obBossFlash(a0)
00017f5e 6610	bne.s	loc_17F70
00017f60 117c0020003e	move.b	#$20,obBossFlash(a0)
00017f66 303c00ac	move.w	#sfx_HitBoss,d0
00017f6a 4eb90000139c	jsr	(QueueSound2).l
00017f70 43f8fb22	lea	(v_palette+$22).w,a1
00017f74 7000	moveq	#0,d0
00017f76 4a51	tst.w	(a1)
00017f78 6604	bne.s	loc_17F7E
00017f7a 303c0eee	move.w	#cWhite,d0
00017f7e 3280	move.w	d0,(a1)
00017f80 5328003e	subq.b	#1,obBossFlash(a0)
00017f84 6606	bne.s	locret_17F8C
00017f86 117c000f0020	move.b	#$F,obColType(a0)
00017f8c 4e75	rts	
00017f8e 6000f8d0	bra.w	BossDefeated
00017f92 7064	moveq	#100,d0
00017f94 610046f6	bsr.w	AddPoints
00017f98 117c00ff003d	move.b	#-1,objoff_3D(a0)
00017f9e 4e75	rts	
00017fa0 70fe	moveq	#-2,d0
00017fa2 0c681e480030	cmpi.w	#boss_lz_x+$68,obBossX(a0)
00017fa8 650c	blo.s	loc_17FB6
00017faa 317c1e480030	move.w	#boss_lz_x+$68,obBossX(a0)
00017fb0 42680010	clr.w	obVelX(a0)
00017fb4 5240	addq.w	#1,d0
00017fb6 0c6805000038	cmpi.w	#boss_lz_y+$440,obBossY(a0)
00017fbc 6e0c	bgt.s	loc_17FCA
00017fbe 317c05000038	move.w	#boss_lz_y+$440,obBossY(a0)
00017fc4 42680012	clr.w	obVelY(a0)
00017fc8 5240	addq.w	#1,d0
00017fca 6610	bne.s	loc_17FDC
00017fcc 317c01400010	move.w	#$140,obVelX(a0)
00017fd2 317cfe000012	move.w	#-$200,obVelY(a0)
00017fd8 54280025	addq.b	#2,ob2ndRout(a0)
00017fdc 6000ff5a	bra.w	loc_17F38
00017fe0 70fe	moveq	#-2,d0
00017fe2 0c681e700030	cmpi.w	#boss_lz_x+$90,obBossX(a0)
00017fe8 650c	blo.s	loc_17FF6
00017fea 317c1e700030	move.w	#boss_lz_x+$90,obBossX(a0)
00017ff0 42680010	clr.w	obVelX(a0)
00017ff4 5240	addq.w	#1,d0
00017ff6 0c6804c00038	cmpi.w	#boss_lz_y+$400,obBossY(a0)
00017ffc 6e0c	bgt.s	loc_1800A
00017ffe 317c04c00038	move.w	#boss_lz_y+$400,obBossY(a0)
00018004 42680012	clr.w	obVelY(a0)
00018008 5240	addq.w	#1,d0
0001800a 660e	bne.s	loc_1801A
0001800c 317cfe800012	move.w	#-$180,obVelY(a0)
00018012 54280025	addq.b	#2,ob2ndRout(a0)
00018016 4228003f	clr.b	objoff_3F(a0)
0001801a 6000ff1c	bra.w	loc_17F38
0001801e 0c6801000038	cmpi.w	#boss_lz_y+$40,obBossY(a0)
00018024 6e28	bgt.s	loc_1804E
00018026 317c01000038	move.w	#boss_lz_y+$40,obBossY(a0)
0001802c 317c01400010	move.w	#$140,obVelX(a0)
00018032 317cff800012	move.w	#-$80,obVelY(a0)
00018038 4a28003d	tst.b	objoff_3D(a0)
0001803c 6708	beq.s	loc_18046
0001803e e1e80010	asl.w	obVelX(a0)
00018042 e1e80012	asl.w	obVelY(a0)
00018046 54280025	addq.b	#2,ob2ndRout(a0)
0001804a 6000feec	bra.w	loc_17F38
0001804e 08e800000022	bset	#0,obStatus(a0)
00018054 5428003f	addq.b	#2,objoff_3F(a0)
00018058 1028003f	move.b	objoff_3F(a0),d0
0001805c 4eb9000029da	jsr	(CalcSine).l
00018062 4a41	tst.w	d1
00018064 6a06	bpl.s	loc_1806C
00018066 08a800000022	bclr	#0,obStatus(a0)
0001806c e840	asr.w	#4,d0
0001806e 4840	swap	d0
00018070 4240	clr.w	d0
00018072 d0a80030	add.l	obBossX(a0),d0
00018076 4840	swap	d0
00018078 31400008	move.w	d0,obX(a0)
0001807c 30280012	move.w	obVelY(a0),d0
00018080 3238d00c	move.w	(v_player+obY).w,d1
00018084 9268000c	sub.w	obY(a0),d1
00018088 6518	bcs.s	loc_180A2
0001808a 04410048	subi.w	#$48,d1
0001808e 6512	bcs.s	loc_180A2
00018090 e240	asr.w	#1,d0
00018092 04410028	subi.w	#$28,d1
00018096 650a	bcs.s	loc_180A2
00018098 e240	asr.w	#1,d0
0001809a 04410028	subi.w	#$28,d1
0001809e 6502	bcs.s	loc_180A2
000180a0 7000	moveq	#0,d0
000180a2 48c0	ext.l	d0
000180a4 e180	asl.l	#8,d0
000180a6 4a28003d	tst.b	objoff_3D(a0)
000180aa 6702	beq.s	loc_180AE
000180ac d080	add.l	d0,d0
000180ae d1a80038	add.l	d0,obBossY(a0)
000180b2 31680038000c	move.w	obBossY(a0),obY(a0)
000180b8 6000fe8e	bra.w	loc_17F48
000180bc 70fe	moveq	#-2,d0
000180be 0c681f4c0030	cmpi.w	#boss_lz_x+$16C,obBossX(a0)
000180c4 650c	blo.s	loc_180D2
000180c6 317c1f4c0030	move.w	#boss_lz_x+$16C,obBossX(a0)
000180cc 42680010	clr.w	obVelX(a0)
000180d0 5240	addq.w	#1,d0
000180d2 0c6800c00038	cmpi.w	#boss_lz_y,obBossY(a0)
000180d8 6e0c	bgt.s	loc_180E6
000180da 317c00c00038	move.w	#boss_lz_y,obBossY(a0)
000180e0 42680012	clr.w	obVelY(a0)
000180e4 5240	addq.w	#1,d0
000180e6 660a	bne.s	loc_180F2
000180e8 54280025	addq.b	#2,ob2ndRout(a0)
000180ec 08a800000022	bclr	#0,obStatus(a0)
000180f2 6000fe44	bra.w	loc_17F38
000180f6 4a28003d	tst.b	objoff_3D(a0)
000180fa 6616	bne.s	loc_18112
000180fc 0c691ec80008	cmpi.w	#boss_lz_x+$E8,obX(a1)
00018102 6d22	blt.s	loc_18126
00018104 0c6900f0000c	cmpi.w	#boss_lz_y+$30,obY(a1)
0001810a 6e1a	bgt.s	loc_18126
0001810c 117c0032003c	move.b	#$32,objoff_3C(a0)
00018112 303c0082	move.w	#bgm_LZ,d0
00018116 4eb900001396	jsr	(QueueSound1).l
0001811c 08e800000022	bset	#0,obStatus(a0)
00018122 54280025	addq.b	#2,ob2ndRout(a0)
00018126 6000fe10	bra.w	loc_17F38
0001812a 4a28003d	tst.b	objoff_3D(a0)
0001812e 6606	bne.s	loc_18136
00018130 5328003c	subq.b	#1,objoff_3C(a0)
00018134 6618	bne.s	loc_1814E
00018136 4228003c	clr.b	objoff_3C(a0)
0001813a 317c04000010	move.w	#$400,obVelX(a0)
00018140 317cffc00012	move.w	#-$40,obVelY(a0)
00018146 4228003d	clr.b	objoff_3D(a0)
0001814a 54280025	addq.b	#2,ob2ndRout(a0)
0001814e 6000fde8	bra.w	loc_17F38
00018152 0c782030f72a	cmpi.w	#boss_lz_end,(v_limitright2).w
00018158 6406	bhs.s	loc_18160
0001815a 5478f72a	addq.w	#2,(v_limitright2).w
0001815e 6006	bra.s	loc_18166
00018160 4a280001	tst.b	obRender(a0)
00018164 6a04	bpl.s	BossLabyrinth_ShipDel
00018166 6000fdd0	bra.w	loc_17F38
0001816a 4ef90000d640	jmp	(DeleteObject).l
00018170 22680034	movea.l	objoff_34(a0),a1
00018174 1011	move.b	(a1),d0
00018176 b010	cmp.b	(a0),d0
00018178 663e	bne.s	BossLabyrinth_FaceDel
0001817a 7000	moveq	#0,d0
0001817c 10290025	move.b	ob2ndRout(a1),d0
00018180 7201	moveq	#1,d1
00018182 4a28003d	tst.b	objoff_3D(a0)
00018186 6704	beq.s	loc_1818C
00018188 720a	moveq	#$A,d1
0001818a 6014	bra.s	loc_181A0
0001818c 4a290020	tst.b	obColType(a1)
00018190 6604	bne.s	loc_18196
00018192 7205	moveq	#5,d1
00018194 600a	bra.s	loc_181A0
00018196 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
0001819c 6502	blo.s	loc_181A0
0001819e 7204	moveq	#4,d1
000181a0 1141001c	move.b	d1,obAnim(a0)
000181a4 0c00000e	cmpi.b	#$E,d0
000181a8 660c	bne.s	loc_181B6
000181aa 117c0006001c	move.b	#6,obAnim(a0)
000181b0 4a280001	tst.b	obRender(a0)
000181b4 6a02	bpl.s	BossLabyrinth_FaceDel
000181b6 6040	bra.s	BossLabyrinth_Display
000181b8 4ef90000d640	jmp	(DeleteObject).l
000181be 117c0007001c	move.b	#7,obAnim(a0)
000181c4 22680034	movea.l	objoff_34(a0),a1
000181c8 1011	move.b	(a1),d0
000181ca b010	cmp.b	(a0),d0
000181cc 6624	bne.s	BossLabyrinth_FlameDel
000181ce 0c29000e0025	cmpi.b	#$E,ob2ndRout(a1)
000181d4 661a	bne.s	loc_181F0
000181d6 117c000b001c	move.b	#$B,obAnim(a0)
000181dc 4a280001	tst.b	obRender(a0)
000181e0 6a10	bpl.s	BossLabyrinth_FlameDel
000181e2 600c	bra.s	loc_181F0
000181e4 4a690010	tst.w	obVelX(a1)
000181e8 6706	beq.s	loc_181F0
000181ea 117c0008001c	move.b	#8,obAnim(a0)
000181f0 6006	bra.s	BossLabyrinth_Display
000181f2 4ef90000d640	jmp	(DeleteObject).l
000181f8 43f900017cbc	lea	(Ani_Eggman).l,a1
000181fe 4eb90000a718	jsr	(AnimateSprite).l
00018204 22680034	movea.l	objoff_34(a0),a1
00018208 316900080008	move.w	obX(a1),obX(a0)
0001820e 3169000c000c	move.w	obY(a1),obY(a0)
00018214 116900220022	move.b	obStatus(a1),obStatus(a0)
0001821a 7003	moveq	#3,d0
0001821c c0280022	and.b	obStatus(a0),d0
00018220 022800fc0001	andi.b	#$FC,obRender(a0)
00018226 81280001	or.b	d0,obRender(a0)
0001822a 4ef90000d604	jmp	(DisplaySprite).l
00018230 7000	moveq	#0,d0
00018232 10280024	move.b	obRoutine(a0),d0
00018236 323b0006	move.w	BossMarble_Index(pc,d0.w),d1
0001823a 4efb1002	jmp	BossMarble_Index(pc,d1.w)
00018254 316800080030	move.w	obX(a0),obBossX(a0)
0001825a 3168000c0038	move.w	obY(a0),obBossY(a0)
00018260 117c000f0020	move.b	#$F,obColType(a0)
00018266 117c00080021	move.b	#8,obBossHits(a0)
0001826c 45faffda	lea	BossMarble_ObjData(pc),a2
00018270 2248	movea.l	a0,a1
00018272 7203	moveq	#3,d1
00018274 601a	bra.s	BossMarble_LoadBoss
00018276 4eb90000daa2	jsr	(FindNextFreeObj).l
0001827c 664a	bne.s	BossMarble_ShipMain
00018284 336800080008	move.w	obX(a0),obX(a1)
0001828a 3368000c000c	move.w	obY(a0),obY(a1)
00018290 08a800000022	bclr	#0,obStatus(a0)
00018296 42290025	clr.b	ob2ndRout(a1)
0001829a 135a0024	move.b	(a2)+,obRoutine(a1)
0001829e 135a001c	move.b	(a2)+,obAnim(a1)
000182a2 135a0018	move.b	(a2)+,obPriority(a1)
000182a6 237c00017d0c0004	move.l	#Map_Eggman,obMap(a1)
000182ae 337c04000002	move.w	#ArtTile_Eggman,obGfx(a1)
000182b4 137c00040001	move.b	#4,obRender(a1)
000182ba 137c00200019	move.b	#$20,obActWid(a1)
000182c0 23480034	move.l	a0,objoff_34(a1)
000182c4 51c9ffb0	dbf	d1,BossMarble_Loop
000182c8 7000	moveq	#0,d0
000182ca 10280025	move.b	ob2ndRout(a0),d0
000182ce 323b0028	move.w	BossMarble_ShipIndex(pc,d0.w),d1
000182d2 4ebb1024	jsr	BossMarble_ShipIndex(pc,d1.w)
000182d6 43f900017cbc	lea	(Ani_Eggman).l,a1
000182dc 4eb90000a718	jsr	(AnimateSprite).l
000182e2 7003	moveq	#3,d0
000182e4 c0280022	and.b	obStatus(a0),d0
000182e8 022800fc0001	andi.b	#$FC,obRender(a0)
000182ee 81280001	or.b	d0,obRender(a0)
000182f2 4ef90000d604	jmp	(DisplaySprite).l
00018302 1028003f	move.b	objoff_3F(a0),d0
00018306 5428003f	addq.b	#2,objoff_3F(a0)
0001830a 4eb9000029da	jsr	(CalcSine).l
00018310 e440	asr.w	#2,d0
00018312 31400012	move.w	d0,obVelY(a0)
00018316 317cff000010	move.w	#-$100,obVelX(a0)
0001831c 6100f586	bsr.w	BossMove
00018320 0c6819100030	cmpi.w	#boss_mz_x+$110,obBossX(a0)
00018326 660c	bne.s	loc_18334
00018328 54280025	addq.b	#2,ob2ndRout(a0)
0001832c 42280028	clr.b	obSubtype(a0)
00018330 42a80010	clr.l	obVelX(a0)
00018334 4eb9000029b4	jsr	(RandomNumber).l
0001833a 11400034	move.b	d0,objoff_34(a0)
0001833e 31680038000c	move.w	obBossY(a0),obY(a0)
00018344 316800300008	move.w	obBossX(a0),obX(a0)
0001834a 0c2800040025	cmpi.b	#4,ob2ndRout(a0)
00018350 643e	bhs.s	locret_18390
00018352 4a280022	tst.b	obStatus(a0)
00018356 6b3a	bmi.s	loc_18392
00018358 4a280020	tst.b	obColType(a0)
0001835c 6632	bne.s	locret_18390
0001835e 4a28003e	tst.b	obBossFlash(a0)
00018362 6610	bne.s	loc_18374
00018364 117c0028003e	move.b	#$28,obBossFlash(a0)
0001836a 303c00ac	move.w	#sfx_HitBoss,d0
0001836e 4eb90000139c	jsr	(QueueSound2).l
00018374 43f8fb22	lea	(v_palette+$22).w,a1
00018378 7000	moveq	#0,d0
0001837a 4a51	tst.w	(a1)
0001837c 6604	bne.s	loc_18382
0001837e 303c0eee	move.w	#cWhite,d0
00018382 3280	move.w	d0,(a1)
00018384 5328003e	subq.b	#1,obBossFlash(a0)
00018388 6606	bne.s	locret_18390
0001838a 117c000f0020	move.b	#$F,obColType(a0)
00018390 4e75	rts	
00018392 7064	moveq	#100,d0
00018394 610042f6	bsr.w	AddPoints
00018398 117c00040025	move.b	#4,ob2ndRout(a0)
0001839e 317c00b4003c	move.w	#$B4,objoff_3C(a0)
000183a4 42680010	clr.w	obVelX(a0)
000183a8 4e75	rts	
000183aa 7000	moveq	#0,d0
000183ac 10280028	move.b	obSubtype(a0),d0
000183b0 303b0010	move.w	off_183C2(pc,d0.w),d0
000183b4 4ebb000c	jsr	off_183C2(pc,d0.w)
000183b8 022800060028	andi.b	#6,obSubtype(a0)
000183be 6000ff7e	bra.w	loc_1833E
000183ca 4a680010	tst.w	obVelX(a0)
000183ce 662e	bne.s	loc_183FE
000183d0 7040	moveq	#$40,d0
000183d2 0c68022c0038	cmpi.w	#boss_mz_y+$1C,obBossY(a0)
000183d8 670c	beq.s	loc_183E6
000183da 6502	bcs.s	loc_183DE
000183dc 4440	neg.w	d0
000183de 31400012	move.w	d0,obVelY(a0)
000183e2 6000f4c0	bra.w	BossMove
000183e6 317c02000010	move.w	#$200,obVelX(a0)
000183ec 317c01000012	move.w	#$100,obVelY(a0)
000183f2 082800000022	btst	#0,obStatus(a0)
000183f8 6604	bne.s	loc_183FE
000183fa 44680010	neg.w	obVelX(a0)
000183fe 0c280018003e	cmpi.b	#$18,obBossFlash(a0)
00018404 6408	bhs.s	BossMarble_MakeLava
00018406 6100f49c	bsr.w	BossMove
0001840a 59680012	subq.w	#4,obVelY(a0)
0001840e 53280034	subq.b	#1,objoff_34(a0)
00018412 6448	bcc.s	loc_1845C
00018414 4eb90000da8c	jsr	(FindFreeObj).l
0001841a 662e	bne.s	loc_1844A
00018422 337c02e8000c	move.w	#boss_mz_y+$D8,obY(a1)
00018428 4eb9000029b4	jsr	(RandomNumber).l
0001842e 02800000ffff	andi.l	#$FFFF,d0
00018434 80fc0050	divu.w	#$50,d0
00018438 4840	swap	d0
0001843a 06401878	addi.w	#boss_mz_x+$78,d0
0001843e 33400008	move.w	d0,obX(a1)
00018442 ee09	lsr.b	#7,d1
00018444 337c00ff0028	move.w	#$FF,obSubtype(a1)
0001844a 4eb9000029b4	jsr	(RandomNumber).l
00018450 0200001f	andi.b	#$1F,d0
00018454 06000040	addi.b	#$40,d0
00018458 11400034	move.b	d0,objoff_34(a0)
0001845c 082800000022	btst	#0,obStatus(a0)
00018462 6710	beq.s	loc_18474
00018464 0c6819100030	cmpi.w	#boss_mz_x+$110,obBossX(a0)
0001846a 6d30	blt.s	locret_1849C
0001846c 317c19100030	move.w	#boss_mz_x+$110,obBossX(a0)
00018472 600e	bra.s	loc_18482
00018474 0c6818300030	cmpi.w	#boss_mz_x+$30,obBossX(a0)
0001847a 6e20	bgt.s	locret_1849C
0001847c 317c18300030	move.w	#boss_mz_x+$30,obBossX(a0)
00018482 42680010	clr.w	obVelX(a0)
00018486 317cfe800012	move.w	#-$180,obVelY(a0)
0001848c 0c68022c0038	cmpi.w	#boss_mz_y+$1C,obBossY(a0)
00018492 6404	bhs.s	loc_18498
00018494 44680012	neg.w	obVelY(a0)
00018498 54280028	addq.b	#2,obSubtype(a0)
0001849c 4e75	rts	
0001849e 6100f404	bsr.w	BossMove
000184a2 30280038	move.w	obBossY(a0),d0
000184a6 0440022c	subi.w	#boss_mz_y+$1C,d0
000184aa 6e48	bgt.s	locret_184F4
000184ac 303c022c	move.w	#boss_mz_y+$1C,d0
000184b0 4a680012	tst.w	obVelY(a0)
000184b4 6734	beq.s	loc_184EA
000184b6 42680012	clr.w	obVelY(a0)
000184ba 317c0050003c	move.w	#$50,objoff_3C(a0)
000184c0 086800000022	bchg	#0,obStatus(a0)
000184c6 4eb90000da8c	jsr	(FindFreeObj).l
000184cc 661c	bne.s	loc_184EA
000184ce 336800300008	move.w	obBossX(a0),obX(a1)
000184d4 33680038000c	move.w	obBossY(a0),obY(a1)
000184da 06690018000c	addi.w	#$18,obY(a1)
000184e0 12bc0074	move.b	#id_BossFire,obID(a1)
000184e4 137c00010028	move.b	#1,obSubtype(a1)
000184ea 5368003c	subq.w	#1,objoff_3C(a0)
000184ee 6604	bne.s	locret_184F4
000184f0 54280028	addq.b	#2,obSubtype(a0)
000184f4 4e75	rts	
000184f6 5368003c	subq.w	#1,objoff_3C(a0)
000184fa 6b04	bmi.s	loc_18500
000184fc 6000f362	bra.w	BossDefeated
00018500 08e800000022	bset	#0,obStatus(a0)
00018506 08a800070022	bclr	#7,obStatus(a0)
0001850c 42680010	clr.w	obVelX(a0)
00018510 54280025	addq.b	#2,ob2ndRout(a0)
00018514 317cffda003c	move.w	#-$26,objoff_3C(a0)
0001851a 4a38f7a7	tst.b	(v_bossstatus).w
0001851e 660a	bne.s	locret_1852A
00018520 11fc0001f7a7	move.b	#1,(v_bossstatus).w
00018526 42680012	clr.w	obVelY(a0)
0001852a 4e75	rts	
0001852c 5268003c	addq.w	#1,objoff_3C(a0)
00018530 6712	beq.s	loc_18544
00018532 6a1a	bpl.s	loc_1854E
00018534 0c6802700038	cmpi.w	#boss_mz_y+$60,obBossY(a0)
0001853a 6408	bhs.s	loc_18544
0001853c 066800180012	addi.w	#$18,obVelY(a0)
00018542 6036	bra.s	loc_1857A
00018544 42680012	clr.w	obVelY(a0)
00018548 4268003c	clr.w	objoff_3C(a0)
0001854c 602c	bra.s	loc_1857A
0001854e 0c680030003c	cmpi.w	#$30,objoff_3C(a0)
00018554 6510	blo.s	loc_18566
00018556 6714	beq.s	loc_1856C
00018558 0c680038003c	cmpi.w	#$38,objoff_3C(a0)
0001855e 651a	blo.s	loc_1857A
00018560 54280025	addq.b	#2,ob2ndRout(a0)
00018564 6014	bra.s	loc_1857A
00018566 51680012	subq.w	#8,obVelY(a0)
0001856a 600e	bra.s	loc_1857A
0001856c 42680012	clr.w	obVelY(a0)
00018570 303c0083	move.w	#bgm_MZ,d0
00018574 4eb900001396	jsr	(QueueSound1).l
0001857a 6100f328	bsr.w	BossMove
0001857e 6000fdbe	bra.w	loc_1833E
00018582 317c05000010	move.w	#$500,obVelX(a0)
00018588 317cffc00012	move.w	#-$40,obVelY(a0)
0001858e 0c781960f72a	cmpi.w	#boss_mz_end,(v_limitright2).w
00018594 6406	bhs.s	loc_1859C
00018596 5478f72a	addq.w	#2,(v_limitright2).w
0001859a 6006	bra.s	loc_185A2
0001859c 4a280001	tst.b	obRender(a0)
000185a0 6a08	bpl.s	BossMarble_ShipDel
000185a2 6100f300	bsr.w	BossMove
000185a6 6000fd96	bra.w	loc_1833E
000185aa 4ef90000d640	jmp	(DeleteObject).l
000185b0 7000	moveq	#0,d0
000185b2 7201	moveq	#1,d1
000185b4 22680034	movea.l	objoff_34(a0),a1
000185b8 10290025	move.b	ob2ndRout(a1),d0
000185bc 5540	subq.w	#2,d0
000185be 6612	bne.s	loc_185D2
000185c0 082900010028	btst	#1,obSubtype(a1)
000185c6 6712	beq.s	loc_185DA
000185c8 4a690012	tst.w	obVelY(a1)
000185cc 660c	bne.s	loc_185DA
000185ce 7204	moveq	#4,d1
000185d0 601c	bra.s	loc_185EE
000185d2 5500	subq.b	#2,d0
000185d4 6b04	bmi.s	loc_185DA
000185d6 720a	moveq	#$A,d1
000185d8 6014	bra.s	loc_185EE
000185da 4a290020	tst.b	obColType(a1)
000185de 6604	bne.s	loc_185E4
000185e0 7205	moveq	#5,d1
000185e2 600a	bra.s	loc_185EE
000185e4 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
000185ea 6502	blo.s	loc_185EE
000185ec 7204	moveq	#4,d1
000185ee 1141001c	move.b	d1,obAnim(a0)
000185f2 5900	subq.b	#4,d0
000185f4 660c	bne.s	loc_18602
000185f6 117c0006001c	move.b	#6,obAnim(a0)
000185fc 4a280001	tst.b	obRender(a0)
00018600 6a02	bpl.s	BossMarble_FaceDel
00018602 603a	bra.s	BossMarble_Display
00018604 4ef90000d640	jmp	(DeleteObject).l
0001860a 117c0007001c	move.b	#7,obAnim(a0)
00018610 22680034	movea.l	objoff_34(a0),a1
00018614 0c2900080025	cmpi.b	#8,ob2ndRout(a1)
0001861a 6d0e	blt.s	loc_1862A
0001861c 117c000b001c	move.b	#$B,obAnim(a0)
00018622 4a280001	tst.b	obRender(a0)
00018626 6a10	bpl.s	BossMarble_FlameDel
00018628 600c	bra.s	loc_18636
0001862a 4a690010	tst.w	obVelX(a1)
0001862e 6706	beq.s	loc_18636
00018630 117c0008001c	move.b	#8,obAnim(a0)
00018636 6006	bra.s	BossMarble_Display
00018638 4ef90000d640	jmp	(DeleteObject).l
0001863e 43f900017cbc	lea	(Ani_Eggman).l,a1
00018644 4eb90000a718	jsr	(AnimateSprite).l
0001864a 22680034	movea.l	objoff_34(a0),a1
0001864e 316900080008	move.w	obX(a1),obX(a0)
00018654 3169000c000c	move.w	obY(a1),obY(a0)
0001865a 116900220022	move.b	obStatus(a1),obStatus(a0)
00018660 7003	moveq	#3,d0
00018662 c0280022	and.b	obStatus(a0),d0
00018666 022800fc0001	andi.b	#$FC,obRender(a0)
0001866c 81280001	or.b	d0,obRender(a0)
00018670 4ef90000d604	jmp	(DisplaySprite).l
00018676 22680034	movea.l	objoff_34(a0),a1
0001867a 0c2900080025	cmpi.b	#8,ob2ndRout(a1)
00018680 6606	bne.s	loc_18688
00018682 4a280001	tst.b	obRender(a0)
00018686 6a16	bpl.s	BossMarble_TubeDel
00018688 217c00017dd40004	move.l	#Map_BossItems,obMap(a0)
00018690 317c246c0002	move.w	#ArtTile_Eggman_Weapons|Tile_Pal2,obGfx(a0)
00018696 117c0004001a	move.b	#4,obFrame(a0)
0001869c 60ac	bra.s	loc_1864A
0001869e 4ef90000d640	jmp	(DeleteObject).l
000186a4 7000	moveq	#0,d0
000186a6 10280024	move.b	obRoutine(a0),d0
000186aa 303b000c	move.w	BossFire_Index(pc,d0.w),d0
000186ae 4ebb0008	jsr	BossFire_Index(pc,d0.w)
000186b2 4ef90000d604	jmp	(DisplaySprite).l
000186c0 117c00080016	move.b	#8,obHeight(a0)
000186c6 117c00080017	move.b	#8,obWidth(a0)
000186cc 217c0000b36e0004	move.l	#Map_Fire,obMap(a0)
000186d4 317c03450002	move.w	#ArtTile_MZ_Fireball,obGfx(a0)
000186da 117c00040001	move.b	#4,obRender(a0)
000186e0 117c00050018	move.b	#5,obPriority(a0)
000186e6 3168000c0038	move.w	obY(a0),obBossY(a0)
000186ec 117c00080019	move.b	#8,obActWid(a0)
000186f2 54280024	addq.b	#2,obRoutine(a0)
000186f6 4a280028	tst.b	obSubtype(a0)
000186fa 660e	bne.s	loc_1870A
000186fc 117c008b0020	move.b	#$8B,obColType(a0)
00018702 54280024	addq.b	#2,obRoutine(a0)
00018706 6000017e	bra.w	BossFire_TempFire
0001870a 117c001e0029	move.b	#$1E,objoff_29(a0)
00018710 303c00ae	move.w	#sfx_Fireball,d0
00018714 4eb90000139c	jsr	(QueueSound2).l
0001871a 7000	moveq	#0,d0
0001871c 10280025	move.b	ob2ndRout(a0),d0
00018720 303b0028	move.w	BossFire_Index2(pc,d0.w),d0
00018724 4ebb0024	jsr	BossFire_Index2(pc,d0.w)
00018728 4eb90000d5de	jsr	(SpeedToPos).l
0001872e 43f90000e4c4	lea	(Ani_Fire).l,a1
00018734 4eb90000a718	jsr	(AnimateSprite).l
0001873a 0c6802e8000c	cmpi.w	#boss_mz_y+$D8,obY(a0)
00018740 6202	bhi.s	BossFire_Delete
00018742 4e75	rts	
00018744 4ef90000d640	jmp	(DeleteObject).l
00018752 08e800010022	bset	#1,obStatus(a0)
00018758 53280029	subq.b	#1,objoff_29(a0)
0001875c 6a22	bpl.s	locret_18780
0001875e 117c008b0020	move.b	#$8B,obColType(a0)
00018764 42280028	clr.b	obSubtype(a0)
00018768 066800180012	addi.w	#$18,obVelY(a0)
0001876e 08a800010022	bclr	#1,obStatus(a0)
00018774 6100c6a2	bsr.w	ObjFloorDist
00018778 4a41	tst.w	d1
0001877a 6a04	bpl.s	locret_18780
0001877c 54280025	addq.b	#2,ob2ndRout(a0)
00018780 4e75	rts	
00018782 5568000c	subq.w	#2,obY(a0)
00018786 08e800070002	bset	#7,obGfx(a0)
0001878c 317c00a00010	move.w	#$A0,obVelX(a0)
00018792 42680012	clr.w	obVelY(a0)
00018796 316800080030	move.w	obX(a0),obBossX(a0)
0001879c 3168000c0038	move.w	obY(a0),obBossY(a0)
000187a2 117c00030029	move.b	#3,objoff_29(a0)
000187a8 4eb90000daa2	jsr	(FindNextFreeObj).l
000187ae 661a	bne.s	loc_187CA
000187b0 47d1	lea	(a1),a3
000187b2 45d0	lea	(a0),a2
000187b4 7003	moveq	#3,d0
000187b6 26da	move.l	(a2)+,(a3)+
000187b8 26da	move.l	(a2)+,(a3)+
000187ba 26da	move.l	(a2)+,(a3)+
000187bc 26da	move.l	(a2)+,(a3)+
000187be 51c8fff6	dbf	d0,BossFire_Loop
000187c2 44690010	neg.w	obVelX(a1)
000187c6 54290025	addq.b	#2,ob2ndRout(a1)
000187ca 54280025	addq.b	#2,ob2ndRout(a0)
000187ce 4e75	rts	
000187d0 4eb90000daa2	jsr	(FindNextFreeObj).l
000187d6 6616	bne.s	locret_187EE
000187d8 336800080008	move.w	obX(a0),obX(a1)
000187de 3368000c000c	move.w	obY(a0),obY(a1)
000187e4 12bc0074	move.b	#id_BossFire,obID(a1)
000187e8 337c00670028	move.w	#$67,obSubtype(a1)
000187ee 4e75	rts	
000187f0 6100c626	bsr.w	ObjFloorDist
000187f4 4a41	tst.w	d1
000187f6 6a2e	bpl.s	loc_18826
000187f8 30280008	move.w	obX(a0),d0
000187fc 0c401940	cmpi.w	#boss_mz_x+$140,d0
00018800 6e2a	bgt.s	loc_1882C
00018802 32280030	move.w	obBossX(a0),d1
00018806 b240	cmp.w	d0,d1
00018808 6714	beq.s	loc_1881E
0001880a 02400010	andi.w	#$10,d0
0001880e 02410010	andi.w	#$10,d1
00018812 b240	cmp.w	d0,d1
00018814 6708	beq.s	loc_1881E
00018816 61b8	bsr.s	BossFire_Duplicate2
00018818 316800080032	move.w	obX(a0),objoff_32(a0)
0001881e 316800080030	move.w	obX(a0),obBossX(a0)
00018824 4e75	rts	
00018826 54280025	addq.b	#2,ob2ndRout(a0)
0001882a 4e75	rts	
0001882c 54280024	addq.b	#2,obRoutine(a0)
00018830 4e75	rts	
00018832 08a800010022	bclr	#1,obStatus(a0)
00018838 066800240012	addi.w	#$24,obVelY(a0)
0001883e 30280008	move.w	obX(a0),d0
00018842 90680032	sub.w	objoff_32(a0),d0
00018846 6a02	bpl.s	loc_1884A
00018848 4440	neg.w	d0
0001884a 0c400012	cmpi.w	#$12,d0
0001884e 6606	bne.s	loc_18856
00018850 08a800070002	bclr	#7,obGfx(a0)
00018856 6100c5c0	bsr.w	ObjFloorDist
0001885a 4a41	tst.w	d1
0001885c 6a20	bpl.s	locret_1887E
0001885e 53280029	subq.b	#1,objoff_29(a0)
00018862 671c	beq.s	BossFire_Delete2
00018864 42680012	clr.w	obVelY(a0)
00018868 316800320008	move.w	objoff_32(a0),obX(a0)
0001886e 31680038000c	move.w	obBossY(a0),obY(a0)
00018874 08e800070002	bset	#7,obGfx(a0)
0001887a 55280025	subq.b	#2,ob2ndRout(a0)
0001887e 4e75	rts	
00018880 4ef90000d640	jmp	(DeleteObject).l
00018886 08e800070002	bset	#7,obGfx(a0)
0001888c 53280029	subq.b	#1,objoff_29(a0)
00018890 660e	bne.s	BossFire_Animate
00018892 117c0001001c	move.b	#1,obAnim(a0)
00018898 5968000c	subq.w	#4,obY(a0)
0001889c 42280020	clr.b	obColType(a0)
000188a0 43f90000e4c4	lea	(Ani_Fire).l,a1
000188a6 4ef90000a718	jmp	(AnimateSprite).l
000188ac 4ef90000d640	jmp	(DeleteObject).l
000188b2 4ef90000d640	jmp	(DeleteObject).l
000188b8 7000	moveq	#0,d0
000188ba 10280024	move.b	obRoutine(a0),d0
000188be 323b0006	move.w	BossStarLight_Index(pc,d0.w),d1
000188c2 4efb1002	jmp	BossStarLight_Index(pc,d1.w)
000188dc 317c21880008	move.w	#boss_slz_x+$188,obX(a0)
000188e2 317c0228000c	move.w	#boss_slz_y+$18,obY(a0)
000188e8 316800080030	move.w	obX(a0),obBossX(a0)
000188ee 3168000c0038	move.w	obY(a0),obBossY(a0)
000188f4 117c000f0020	move.b	#$F,obColType(a0)
000188fa 117c00080021	move.b	#8,obBossHits(a0)
00018900 45faffce	lea	BossStarLight_ObjData(pc),a2
00018904 2248	movea.l	a0,a1
00018906 7203	moveq	#3,d1
00018908 601a	bra.s	BossStarLight_LoadBoss
0001890a 4eb90000daa2	jsr	(FindNextFreeObj).l
00018910 664a	bne.s	loc_1895C
00018918 336800080008	move.w	obX(a0),obX(a1)
0001891e 3368000c000c	move.w	obY(a0),obY(a1)
00018924 08a800000022	bclr	#0,obStatus(a0)
0001892a 42290025	clr.b	ob2ndRout(a1)
0001892e 135a0024	move.b	(a2)+,obRoutine(a1)
00018932 135a001c	move.b	(a2)+,obAnim(a1)
00018936 135a0018	move.b	(a2)+,obPriority(a1)
0001893a 237c00017d0c0004	move.l	#Map_Eggman,obMap(a1)
00018942 337c04000002	move.w	#ArtTile_Eggman,obGfx(a1)
00018948 137c00040001	move.b	#4,obRender(a1)
0001894e 137c00200019	move.b	#$20,obActWid(a1)
00018954 23480034	move.l	a0,objoff_34(a1)
00018958 51c9ffb0	dbf	d1,BossStarLight_Loop
0001895c 43f8d040	lea	(v_objspace+object_size*1).w,a1
00018960 45e8002a	lea	objoff_2A(a0),a2
00018964 705e	moveq	#id_Seesaw,d0
00018966 723e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d1
00018968 b011	cmp.b	obID(a1),d0
0001896a 6608	bne.s	loc_18974
0001896c 4a290028	tst.b	obSubtype(a1)
00018970 6702	beq.s	loc_18974
00018972 34c9	move.w	a1,(a2)+
00018974 d2fc0040	adda.w	#object_size,a1
00018978 51c9ffee	dbf	d1,loc_18968
0001897c 7000	moveq	#0,d0
0001897e 10280025	move.b	ob2ndRout(a0),d0
00018982 303b0028	move.w	BossStarLight_ShipIndex(pc,d0.w),d0
00018986 4ebb0024	jsr	BossStarLight_ShipIndex(pc,d0.w)
0001898a 43f900017cbc	lea	(Ani_Eggman).l,a1
00018990 4eb90000a718	jsr	(AnimateSprite).l
00018996 7003	moveq	#3,d0
00018998 c0280022	and.b	obStatus(a0),d0
0001899c 022800fc0001	andi.b	#$FC,obRender(a0)
000189a2 81280001	or.b	d0,obRender(a0)
000189a6 4ef90000d604	jmp	(DisplaySprite).l
000189b8 317cff000010	move.w	#-$100,obVelX(a0)
000189be 0c6821200030	cmpi.w	#boss_slz_x+$120,obBossX(a0)
000189c4 6404	bhs.s	loc_189CA
000189c6 54280025	addq.b	#2,ob2ndRout(a0)
000189ca 6100eed8	bsr.w	BossMove
000189ce 1028003f	move.b	objoff_3F(a0),d0
000189d2 5428003f	addq.b	#2,objoff_3F(a0)
000189d6 4eb9000029da	jsr	(CalcSine).l
000189dc ec40	asr.w	#6,d0
000189de d0680038	add.w	obBossY(a0),d0
000189e2 3140000c	move.w	d0,obY(a0)
000189e6 316800300008	move.w	obBossX(a0),obX(a0)
000189ec 6010	bra.s	loc_189FE
000189ee 6100eeb4	bsr.w	BossMove
000189f2 31680038000c	move.w	obBossY(a0),obY(a0)
000189f8 316800300008	move.w	obBossX(a0),obX(a0)
000189fe 0c2800060025	cmpi.b	#6,ob2ndRout(a0)
00018a04 643e	bhs.s	locret_18A44
00018a06 4a280022	tst.b	obStatus(a0)
00018a0a 6b3a	bmi.s	loc_18A46
00018a0c 4a280020	tst.b	obColType(a0)
00018a10 6632	bne.s	locret_18A44
00018a12 4a28003e	tst.b	obBossFlash(a0)
00018a16 6610	bne.s	loc_18A28
00018a18 117c0020003e	move.b	#$20,obBossFlash(a0)
00018a1e 303c00ac	move.w	#sfx_HitBoss,d0
00018a22 4eb90000139c	jsr	(QueueSound2).l
00018a28 43f8fb22	lea	(v_palette+$22).w,a1
00018a2c 7000	moveq	#0,d0
00018a2e 4a51	tst.w	(a1)
00018a30 6604	bne.s	loc_18A36
00018a32 303c0eee	move.w	#cWhite,d0
00018a36 3280	move.w	d0,(a1)
00018a38 5328003e	subq.b	#1,obBossFlash(a0)
00018a3c 6606	bne.s	locret_18A44
00018a3e 117c000f0020	move.b	#$F,obColType(a0)
00018a44 4e75	rts	
00018a46 7064	moveq	#100,d0
00018a48 61003c42	bsr.w	AddPoints
00018a4c 117c00060025	move.b	#6,ob2ndRout(a0)
00018a52 117c0078003c	move.b	#$78,objoff_3C(a0)
00018a58 42680010	clr.w	obVelX(a0)
00018a5c 4e75	rts	
00018a5e 30280030	move.w	obBossX(a0),d0
00018a62 317c02000010	move.w	#$200,obVelX(a0)
00018a68 082800000022	btst	#0,obStatus(a0)
00018a6e 660c	bne.s	loc_18A7C
00018a70 44680010	neg.w	obVelX(a0)
00018a74 0c402008	cmpi.w	#boss_slz_x+8,d0
00018a78 6e0e	bgt.s	loc_18A88
00018a7a 6006	bra.s	loc_18A82
00018a7c 0c402138	cmpi.w	#boss_slz_x+$138,d0
00018a80 6d06	blt.s	loc_18A88
00018a82 086800000022	bchg	#0,obStatus(a0)
00018a88 30280008	move.w	obX(a0),d0
00018a8c 72ff	moveq	#-1,d1
00018a8e 7402	moveq	#2,d2
00018a90 45e8002a	lea	objoff_2A(a0),a2
00018a94 7828	moveq	#$28,d4
00018a96 4a680010	tst.w	obVelX(a0)
00018a9a 6a02	bpl.s	loc_18A9E
00018a9c 4444	neg.w	d4
00018a9e 321a	move.w	(a2)+,d1
00018aa0 2641	movea.l	d1,a3
00018aa2 082b00030022	btst	#3,obStatus(a3)
00018aa8 660a	bne.s	loc_18AB4
00018aaa 362b0008	move.w	obX(a3),d3
00018aae d644	add.w	d4,d3
00018ab0 9640	sub.w	d0,d3
00018ab2 670c	beq.s	loc_18AC0
00018ab4 51caffe8	dbf	d2,loc_18A9E
00018ab8 11420028	move.b	d2,obSubtype(a0)
00018abc 6000ff0c	bra.w	loc_189CA
00018ac0 11420028	move.b	d2,obSubtype(a0)
00018ac4 54280025	addq.b	#2,ob2ndRout(a0)
00018ac8 117c0028003c	move.b	#$28,objoff_3C(a0)
00018ace 6000fefa	bra.w	loc_189CA
00018ad2 0c280028003c	cmpi.b	#$28,objoff_3C(a0)
00018ad8 665c	bne.s	loc_18B36
00018ada 70ff	moveq	#-1,d0
00018adc 10280028	move.b	obSubtype(a0),d0
00018ae0 4880	ext.w	d0
00018ae2 6b5c	bmi.s	loc_18B40
00018ae4 5540	subq.w	#2,d0
00018ae6 4440	neg.w	d0
00018ae8 d040	add.w	d0,d0
00018aea 43e8002a	lea	objoff_2A(a0),a1
00018aee 30310000	move.w	(a1,d0.w),d0
00018af2 2440	movea.l	d0,a2
00018af4 43f8d040	lea	(v_objspace+object_size*1).w,a1
00018af8 723e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d1
00018afa b0a9003c	cmp.l	objoff_3C(a1),d0
00018afe 6740	beq.s	loc_18B40
00018b00 d2fc0040	adda.w	#object_size,a1
00018b04 51c9fff4	dbf	d1,loc_18AFA
00018b08 2f08	move.l	a0,-(sp)
00018b0a 41d2	lea	(a2),a0
00018b0c 4eb90000daa2	jsr	(FindNextFreeObj).l
00018b12 205f	movea.l	(sp)+,a0
00018b14 662a	bne.s	loc_18B40
00018b16 12bc007b	move.b	#id_BossSpikeball,obID(a1)
00018b1a 336800080008	move.w	obX(a0),obX(a1)
00018b20 3368000c000c	move.w	obY(a0),obY(a1)
00018b26 06690020000c	addi.w	#$20,obY(a1)
00018b2c 136a00220022	move.b	obStatus(a2),obStatus(a1)
00018b32 234a003c	move.l	a2,objoff_3C(a1)
00018b36 5328003c	subq.b	#1,objoff_3C(a0)
00018b3a 6704	beq.s	loc_18B40
00018b3c 6000fec0	bra.w	loc_189FE
00018b40 55280025	subq.b	#2,ob2ndRout(a0)
00018b44 6000fe84	bra.w	loc_189CA
00018b48 5328003c	subq.b	#1,objoff_3C(a0)
00018b4c 6b04	bmi.s	loc_18B52
00018b4e 6000ed10	bra.w	BossDefeated
00018b52 54280025	addq.b	#2,ob2ndRout(a0)
00018b56 42680012	clr.w	obVelY(a0)
00018b5a 08e800000022	bset	#0,obStatus(a0)
00018b60 08a800070022	bclr	#7,obStatus(a0)
00018b66 42680010	clr.w	obVelX(a0)
00018b6a 117c00e8003c	move.b	#-$18,objoff_3C(a0)
00018b70 4a38f7a7	tst.b	(v_bossstatus).w
00018b74 6606	bne.s	loc_18B7C
00018b76 11fc0001f7a7	move.b	#1,(v_bossstatus).w
00018b7c 6000fe80	bra.w	loc_189FE
00018b80 5228003c	addq.b	#1,objoff_3C(a0)
00018b84 670a	beq.s	loc_18B90
00018b86 6a0e	bpl.s	loc_18B96
00018b88 066800180012	addi.w	#$18,obVelY(a0)
00018b8e 6032	bra.s	loc_18BC2
00018b90 42680012	clr.w	obVelY(a0)
00018b94 602c	bra.s	loc_18BC2
00018b96 0c280020003c	cmpi.b	#$20,objoff_3C(a0)
00018b9c 6510	blo.s	loc_18BAE
00018b9e 6714	beq.s	loc_18BB4
00018ba0 0c28002a003c	cmpi.b	#$2A,objoff_3C(a0)
00018ba6 651a	blo.s	loc_18BC2
00018ba8 54280025	addq.b	#2,ob2ndRout(a0)
00018bac 6014	bra.s	loc_18BC2
00018bae 51680012	subq.w	#8,obVelY(a0)
00018bb2 600e	bra.s	loc_18BC2
00018bb4 42680012	clr.w	obVelY(a0)
00018bb8 303c0084	move.w	#bgm_SLZ,d0
00018bbc 4eb900001396	jsr	(QueueSound1).l
00018bc2 6000fe2a	bra.w	loc_189EE
00018bc6 317c04000010	move.w	#$400,obVelX(a0)
00018bcc 317cffc00012	move.w	#-$40,obVelY(a0)
00018bd2 0c782160f72a	cmpi.w	#boss_slz_end,(v_limitright2).w
00018bd8 6406	bhs.s	loc_18BE0
00018bda 5478f72a	addq.w	#2,(v_limitright2).w
00018bde 6008	bra.s	loc_18BE8
00018be0 4a280001	tst.b	obRender(a0)
00018be4 6a00fccc	bpl.w	BossStarLight_Delete
00018be8 6100ecba	bsr.w	BossMove
00018bec 6000fddc	bra.w	loc_189CA
00018bf0 7000	moveq	#0,d0
00018bf2 7201	moveq	#1,d1
00018bf4 22680034	movea.l	objoff_34(a0),a1
00018bf8 10290025	move.b	ob2ndRout(a1),d0
00018bfc 0c000006	cmpi.b	#6,d0
00018c00 6b04	bmi.s	loc_18C06
00018c02 720a	moveq	#$A,d1
00018c04 6014	bra.s	loc_18C1A
00018c06 4a290020	tst.b	obColType(a1)
00018c0a 6604	bne.s	loc_18C10
00018c0c 7205	moveq	#5,d1
00018c0e 600a	bra.s	loc_18C1A
00018c10 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
00018c16 6502	blo.s	loc_18C1A
00018c18 7204	moveq	#4,d1
00018c1a 1141001c	move.b	d1,obAnim(a0)
00018c1e 0c00000a	cmpi.b	#$A,d0
00018c22 660e	bne.s	loc_18C32
00018c24 117c0006001c	move.b	#6,obAnim(a0)
00018c2a 4a280001	tst.b	obRender(a0)
00018c2e 6a00fc82	bpl.w	BossStarLight_Delete
00018c32 6038	bra.s	loc_18C6C
00018c34 117c0008001c	move.b	#8,obAnim(a0)
00018c3a 22680034	movea.l	objoff_34(a0),a1
00018c3e 0c29000a0025	cmpi.b	#$A,ob2ndRout(a1)
00018c44 6610	bne.s	loc_18C56
00018c46 4a280001	tst.b	obRender(a0)
00018c4a 6a00fc66	bpl.w	BossStarLight_Delete
00018c4e 117c000b001c	move.b	#$B,obAnim(a0)
00018c54 6016	bra.s	loc_18C6C
00018c56 0c2900080025	cmpi.b	#8,ob2ndRout(a1)
00018c5c 6e0e	bgt.s	loc_18C6C
00018c5e 0c2900040025	cmpi.b	#4,ob2ndRout(a1)
00018c64 6d06	blt.s	loc_18C6C
00018c66 117c0007001c	move.b	#7,obAnim(a0)
00018c6c 43f900017cbc	lea	(Ani_Eggman).l,a1
00018c72 4eb90000a718	jsr	(AnimateSprite).l
00018c78 22680034	movea.l	objoff_34(a0),a1
00018c7c 316900080008	move.w	obX(a1),obX(a0)
00018c82 3169000c000c	move.w	obY(a1),obY(a0)
00018c88 116900220022	move.b	obStatus(a1),obStatus(a0)
00018c8e 7003	moveq	#3,d0
00018c90 c0280022	and.b	obStatus(a0),d0
00018c94 022800fc0001	andi.b	#$FC,obRender(a0)
00018c9a 81280001	or.b	d0,obRender(a0)
00018c9e 4ef90000d604	jmp	(DisplaySprite).l
00018ca4 22680034	movea.l	objoff_34(a0),a1
00018ca8 0c29000a0025	cmpi.b	#$A,ob2ndRout(a1)
00018cae 6608	bne.s	loc_18CB8
00018cb0 4a280001	tst.b	obRender(a0)
00018cb4 6a00fbfc	bpl.w	BossStarLight_Delete
00018cb8 217c00017dd40004	move.l	#Map_BossItems,obMap(a0)
00018cc0 317c246c0002	move.w	#ArtTile_Eggman_Weapons|Tile_Pal2,obGfx(a0)
00018cc6 117c0003001a	move.b	#3,obFrame(a0)
00018ccc 60aa	bra.s	loc_18C78
00018cce 7000	moveq	#0,d0
00018cd0 10280024	move.b	obRoutine(a0),d0
00018cd4 303b002e	move.w	BossSpikeball_Index(pc,d0.w),d0
00018cd8 4ebb002a	jsr	BossSpikeball_Index(pc,d0.w)
00018cdc 30280030	move.w	obBossX(a0),d0
00018ce0 0240ff80	andi.w	#$FF80,d0
00018ce4 3238f700	move.w	(v_screenposx).w,d1
00018ce8 04410080	subi.w	#$80,d1
00018cec 0241ff80	andi.w	#$FF80,d1
00018cf0 9041	sub.w	d1,d0
00018cf2 6b00fbbe	bmi.w	BossStarLight_Delete
00018cf6 0c400280	cmpi.w	#$280,d0
00018cfa 6200fbb6	bhi.w	BossStarLight_Delete
00018cfe 4ef90000d604	jmp	(DisplaySprite).l
00018d10 217c000119e60004	move.l	#Map_SSawBall,obMap(a0)
00018d18 317c05180002	move.w	#ArtTile_Eggman_Spikeball,obGfx(a0)
00018d1e 117c0001001a	move.b	#1,obFrame(a0)
00018d24 002800040001	ori.b	#4,obRender(a0)
00018d2a 117c00040018	move.b	#4,obPriority(a0)
00018d30 117c008b0020	move.b	#$8B,obColType(a0)
00018d36 117c000c0019	move.b	#$C,obActWid(a0)
00018d3c 2268003c	movea.l	objoff_3C(a0),a1
00018d40 316900080030	move.w	obX(a1),obBossX(a0)
00018d46 3169000c0034	move.w	obY(a1),objoff_34(a0)
00018d4c 08e800000022	bset	#0,obStatus(a0)
00018d52 30280008	move.w	obX(a0),d0
00018d56 b0690008	cmp.w	obX(a1),d0
00018d5a 6e0c	bgt.s	loc_18D68
00018d5c 08a800000022	bclr	#0,obStatus(a0)
00018d62 117c0002003a	move.b	#2,objoff_3A(a0)
00018d68 54280024	addq.b	#2,obRoutine(a0)
00018d6c 4eb90000d5b2	jsr	(ObjectFall).l
00018d72 2268003c	movea.l	objoff_3C(a0),a1
00018d76 45f900019018	lea	(BossSpikeball_SeesawYOffset).l,a2
00018d7c 7000	moveq	#0,d0
00018d7e 1029001a	move.b	obFrame(a1),d0
00018d82 32280008	move.w	obX(a0),d1
00018d86 92680030	sub.w	obBossX(a0),d1
00018d8a 6402	bcc.s	loc_18D8E
00018d8c 5440	addq.w	#2,d0
00018d8e d040	add.w	d0,d0
00018d90 32280034	move.w	objoff_34(a0),d1
00018d94 d2720000	add.w	(a2,d0.w),d1
00018d98 b268000c	cmp.w	obY(a0),d1
00018d9c 6e26	bgt.s	locret_18DC4
00018d9e 2268003c	movea.l	objoff_3C(a0),a1
00018da2 7202	moveq	#2,d1
00018da4 082800000022	btst	#0,obStatus(a0)
00018daa 6702	beq.s	loc_18DAE
00018dac 7200	moveq	#0,d1
00018dae 317c00f00028	move.w	#$F0,obSubtype(a0)
00018db4 117c000a001f	move.b	#10,obDelayAni(a0)
00018dba 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
00018dc0 600001e0	bra.w	loc_18FA2
00018dc4 4e75	rts	
00018dc6 2268003c	movea.l	objoff_3C(a0),a1
00018dca 7000	moveq	#0,d0
00018dcc 1028003a	move.b	objoff_3A(a0),d0
00018dd0 9029003a	sub.b	objoff_3A(a1),d0
00018dd4 6754	beq.s	loc_18E2A
00018dd6 6402	bcc.s	loc_18DDA
00018dd8 4400	neg.b	d0
00018dda 323cf7e8	move.w	#-$818,d1
00018dde 343cfeec	move.w	#-$114,d2
00018de2 0c000001	cmpi.b	#1,d0
00018de6 6718	beq.s	loc_18E00
00018de8 323cf6a0	move.w	#-$960,d1
00018dec 343cff0c	move.w	#-$F4,d2
00018df0 0c6909c00038	cmpi.w	#$9C0,obBossY(a1)
00018df6 6d08	blt.s	loc_18E00
00018df8 323cf5e0	move.w	#-$A20,d1
00018dfc 343cff80	move.w	#-$80,d2
00018e00 31410012	move.w	d1,obVelY(a0)
00018e04 31420010	move.w	d2,obVelX(a0)
00018e08 30280008	move.w	obX(a0),d0
00018e0c 90680030	sub.w	obBossX(a0),d0
00018e10 6404	bcc.s	loc_18E16
00018e12 44680010	neg.w	obVelX(a0)
00018e16 117c0001001a	move.b	#1,obFrame(a0)
00018e1c 317c00200028	move.w	#$20,obSubtype(a0)
00018e22 54280024	addq.b	#2,obRoutine(a0)
00018e26 60000082	bra.w	BossSpikeball_HitBoss
00018e2a 45f900019018	lea	(BossSpikeball_SeesawYOffset).l,a2
00018e30 7000	moveq	#0,d0
00018e32 1029001a	move.b	obFrame(a1),d0
00018e36 343c0028	move.w	#$28,d2
00018e3a 32280008	move.w	obX(a0),d1
00018e3e 92680030	sub.w	obBossX(a0),d1
00018e42 6404	bcc.s	loc_18E48
00018e44 4442	neg.w	d2
00018e46 5440	addq.w	#2,d0
00018e48 d040	add.w	d0,d0
00018e4a 32280034	move.w	objoff_34(a0),d1
00018e4e d2720000	add.w	(a2,d0.w),d1
00018e52 3141000c	move.w	d1,obY(a0)
00018e56 d4680030	add.w	obBossX(a0),d2
00018e5a 31420008	move.w	d2,obX(a0)
00018e5e 4268000e	clr.w	obY+2(a0)
00018e62 4268000a	clr.w	obX+2(a0)
00018e66 53680028	subq.w	#1,obSubtype(a0)
00018e6a 660e	bne.s	loc_18E7A
00018e6c 317c00200028	move.w	#$20,obSubtype(a0)
00018e72 117c00080024	move.b	#8,obRoutine(a0)
00018e78 4e75	rts	
00018e7a 0c6800780028	cmpi.w	#$78,obSubtype(a0)
00018e80 6606	bne.s	loc_18E88
00018e82 117c0005001f	move.b	#5,obDelayAni(a0)
00018e88 0c68003c0028	cmpi.w	#$3C,obSubtype(a0)
00018e8e 6606	bne.s	loc_18E96
00018e90 117c0002001f	move.b	#2,obDelayAni(a0)
00018e96 5328001e	subq.b	#1,obTimeFrame(a0)
00018e9a 6e0c	bgt.s	locret_18EA8
00018e9c 08680000001a	bchg	#0,obFrame(a0)
00018ea2 1168001f001e	move.b	obDelayAni(a0),obTimeFrame(a0)
00018ea8 4e75	rts	
00018eaa 43f8d040	lea	(v_objspace+object_size*1).w,a1
00018eae 707a	moveq	#id_BossStarLight,d0
00018eb0 7240	moveq	#object_size,d1
00018eb2 743e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d2
00018eb4 b011	cmp.b	obID(a1),d0
00018eb6 6708	beq.s	loc_18EC0
00018eb8 d2c1	adda.w	d1,a1
00018eba 51cafff8	dbf	d2,loc_18EB4
00018ebe 6078	bra.s	loc_18F38
00018ec0 30290008	move.w	obX(a1),d0
00018ec4 3229000c	move.w	obY(a1),d1
00018ec8 34280008	move.w	obX(a0),d2
00018ecc 3628000c	move.w	obY(a0),d3
00018ed0 45fa0150	lea	BossSpikeball_BossHitbox(pc),a2
00018ed4 47fa0150	lea	BossSpikeball_BallHitbox(pc),a3
00018ed8 181a	move.b	(a2)+,d4
00018eda 4884	ext.w	d4
00018edc d044	add.w	d4,d0
00018ede 181b	move.b	(a3)+,d4
00018ee0 4884	ext.w	d4
00018ee2 d444	add.w	d4,d2
00018ee4 b440	cmp.w	d0,d2
00018ee6 6550	blo.s	loc_18F38
00018ee8 181a	move.b	(a2)+,d4
00018eea 4884	ext.w	d4
00018eec d044	add.w	d4,d0
00018eee 181b	move.b	(a3)+,d4
00018ef0 4884	ext.w	d4
00018ef2 d444	add.w	d4,d2
00018ef4 b042	cmp.w	d2,d0
00018ef6 6540	blo.s	loc_18F38
00018ef8 181a	move.b	(a2)+,d4
00018efa 4884	ext.w	d4
00018efc d244	add.w	d4,d1
00018efe 181b	move.b	(a3)+,d4
00018f00 4884	ext.w	d4
00018f02 d644	add.w	d4,d3
00018f04 b641	cmp.w	d1,d3
00018f06 6530	blo.s	loc_18F38
00018f08 181a	move.b	(a2)+,d4
00018f0a 4884	ext.w	d4
00018f0c d244	add.w	d4,d1
00018f0e 181b	move.b	(a3)+,d4
00018f10 4884	ext.w	d4
00018f12 d644	add.w	d4,d3
00018f14 b243	cmp.w	d3,d1
00018f16 6520	blo.s	loc_18F38
00018f18 54280024	addq.b	#2,obRoutine(a0)
00018f1c 42680028	clr.w	obSubtype(a0)
00018f20 42290020	clr.b	obColType(a1)
00018f24 53290021	subq.b	#1,obBossHits(a1)
00018f28 660e	bne.s	loc_18F38
00018f2a 08e900070022	bset	#7,obStatus(a1)
00018f30 42680010	clr.w	obVelX(a0)
00018f34 42680012	clr.w	obVelY(a0)
00018f38 4a680012	tst.w	obVelY(a0)
00018f3c 6a1e	bpl.s	loc_18F5C
00018f3e 4eb90000d5b2	jsr	(ObjectFall).l
00018f44 30280034	move.w	objoff_34(a0),d0
00018f48 0440002f	subi.w	#$2F,d0
00018f4c b068000c	cmp.w	obY(a0),d0
00018f50 6e06	bgt.s	loc_18F58
00018f52 4eb90000d5b2	jsr	(ObjectFall).l
00018f58 6000ff20	bra.w	loc_18E7A
00018f5c 4eb90000d5b2	jsr	(ObjectFall).l
00018f62 2268003c	movea.l	objoff_3C(a0),a1
00018f66 45f900019018	lea	(BossSpikeball_SeesawYOffset).l,a2
00018f6c 7000	moveq	#0,d0
00018f6e 1029001a	move.b	obFrame(a1),d0
00018f72 32280008	move.w	obX(a0),d1
00018f76 92680030	sub.w	obBossX(a0),d1
00018f7a 6402	bcc.s	loc_18F7E
00018f7c 5440	addq.w	#2,d0
00018f7e d040	add.w	d0,d0
00018f80 32280034	move.w	objoff_34(a0),d1
00018f84 d2720000	add.w	(a2,d0.w),d1
00018f88 b268000c	cmp.w	obY(a0),d1
00018f8c 6eca	bgt.s	loc_18F58
00018f8e 2268003c	movea.l	objoff_3C(a0),a1
00018f92 7202	moveq	#2,d1
00018f94 4a680010	tst.w	obVelX(a0)
00018f98 6b02	bmi.s	loc_18F9C
00018f9a 7200	moveq	#0,d1
00018f9c 317c00000028	move.w	#0,obSubtype(a0)
00018fa2 1341003a	move.b	d1,objoff_3A(a1)
00018fa6 1141003a	move.b	d1,objoff_3A(a0)
00018faa b229001a	cmp.b	obFrame(a1),d1
00018fae 6758	beq.s	loc_19008
00018fb0 08a900030022	bclr	#3,obStatus(a1)
00018fb6 6750	beq.s	loc_19008
00018fb8 42290025	clr.b	ob2ndRout(a1)
00018fbc 137c00020024	move.b	#2,obRoutine(a1)
00018fc2 45f8d000	lea	(v_player).w,a2
00018fc6 356800120012	move.w	obVelY(a0),obVelY(a2)
00018fcc 446a0012	neg.w	obVelY(a2)
00018fd0 0c290001001a	cmpi.b	#1,obFrame(a1)
00018fd6 6604	bne.s	loc_18FDC
00018fd8 e0ea0012	asr.w	obVelY(a2)
00018fdc 08ea00010022	bset	#1,obStatus(a2)
00018fe2 08aa00030022	bclr	#3,obStatus(a2)
00018fe8 422a003c	clr.b	jumping(a2)
00018fec 2f08	move.l	a0,-(sp)
00018fee 41d2	lea	(a2),a0
00018ff0 4eb9000133ac	jsr	(Sonic_ChkRoll).l
00018ff6 205f	movea.l	(sp)+,a0
00018ff8 157c00020024	move.b	#2,obRoutine(a2)
00018ffe 303c00cc	move.w	#sfx_Spring,d0
00019002 4eb90000139c	jsr	(QueueSound2).l
00019008 42680010	clr.w	obVelX(a0)
0001900c 42680012	clr.w	obVelY(a0)
00019010 54280024	addq.b	#2,obRoutine(a0)
00019014 6000fe64	bra.w	loc_18E7A
0001902a 10bc003f	move.b	#id_Explosion,obID(a0)
0001902e 42280024	clr.b	obRoutine(a0)
00019032 0c6800200028	cmpi.w	#$20,obSubtype(a0)
00019038 6702	beq.s	BossSpikeball_MakeFrag
0001903a 4e75	rts	
0001903c 31680034000c	move.w	objoff_34(a0),obY(a0)
00019042 7203	moveq	#3,d1
00019044 45fa005a	lea	BossSpikeball_FragSpeed(pc),a2
00019048 4eb90000da8c	jsr	(FindFreeObj).l
0001904e 664a	bne.s	loc_1909A
00019050 12bc007b	move.b	#id_BossSpikeball,obID(a1)
00019054 137c000a0024	move.b	#$A,obRoutine(a1)
0001905a 237c000190de0004	move.l	#Map_BSBall,obMap(a1)
00019062 137c00030018	move.b	#3,obPriority(a1)
00019068 337c05180002	move.w	#ArtTile_Eggman_Spikeball,obGfx(a1)
0001906e 336800080008	move.w	obX(a0),obX(a1)
00019074 3368000c000c	move.w	obY(a0),obY(a1)
0001907a 335a0010	move.w	(a2)+,obVelX(a1)
0001907e 335a0012	move.w	(a2)+,obVelY(a1)
00019082 137c00980020	move.b	#$98,obColType(a1)
00019088 002900040001	ori.b	#4,obRender(a1)
0001908e 08e900070001	bset	#7,obRender(a1)
00019094 137c000c0019	move.b	#$C,obActWid(a1)
0001909a 51c9ffac	dbf	d1,BossSpikeball_Loop
0001909e 4e75	rts	
000190b0 4eb90000d5de	jsr	(SpeedToPos).l
000190b6 316800080030	move.w	obX(a0),obBossX(a0)
000190bc 3168000c0034	move.w	obY(a0),objoff_34(a0)
000190c2 066800180012	addi.w	#$18,obVelY(a0)
000190c8 7004	moveq	#4,d0
000190ca c078fe0e	and.w	(v_vblank_word).w,d0
000190ce e448	lsr.w	#2,d0
000190d0 1140001a	move.b	d0,obFrame(a0)
000190d4 4a280001	tst.b	obRender(a0)
000190d8 6a00f7d8	bpl.w	BossStarLight_Delete
000190dc 4e75	rts	
000190ee 7000	moveq	#0,d0
000190f0 10280024	move.b	obRoutine(a0),d0
000190f4 323b0006	move.w	BossSpringYard_Index(pc,d0.w),d1
000190f8 4efb1002	jmp	BossSpringYard_Index(pc,d1.w)
00019112 317c2db00008	move.w	#boss_syz_x+$1B0,obX(a0)
00019118 317c04da000c	move.w	#boss_syz_y+$E,obY(a0)
0001911e 316800080030	move.w	obX(a0),obBossX(a0)
00019124 3168000c0038	move.w	obY(a0),obBossY(a0)
0001912a 117c000f0020	move.b	#$F,obColType(a0)
00019130 117c00080021	move.b	#8,obBossHits(a0)
00019136 45faffce	lea	BossSpringYard_ObjData(pc),a2
0001913a 2248	movea.l	a0,a1
0001913c 7203	moveq	#3,d1
0001913e 6018	bra.s	BossSpringYard_LoadBoss
00019140 4eb90000daa2	jsr	(FindNextFreeObj).l
00019146 6648	bne.s	BossSpringYard_ShipMain
00019148 12bc0075	move.b	#id_BossSpringYard,obID(a1)
0001914c 336800080008	move.w	obX(a0),obX(a1)
00019152 3368000c000c	move.w	obY(a0),obY(a1)
00019158 08a800000022	bclr	#0,obStatus(a0)
0001915e 42290025	clr.b	ob2ndRout(a1)
00019162 135a0024	move.b	(a2)+,obRoutine(a1)
00019166 135a001c	move.b	(a2)+,obAnim(a1)
0001916a 135a0018	move.b	(a2)+,obPriority(a1)
0001916e 237c00017d0c0004	move.l	#Map_Eggman,obMap(a1)
00019176 337c04000002	move.w	#ArtTile_Eggman,obGfx(a1)
0001917c 137c00040001	move.b	#4,obRender(a1)
00019182 137c00200019	move.b	#$20,obActWid(a1)
00019188 23480034	move.l	a0,objoff_34(a1)
0001918c 51c9ffb2	dbf	d1,BossSpringYard_Loop
00019190 7000	moveq	#0,d0
00019192 10280025	move.b	ob2ndRout(a0),d0
00019196 323b0028	move.w	BossSpringYard_ShipIndex(pc,d0.w),d1
0001919a 4ebb1024	jsr	BossSpringYard_ShipIndex(pc,d1.w)
0001919e 43f900017cbc	lea	(Ani_Eggman).l,a1
000191a4 4eb90000a718	jsr	(AnimateSprite).l
000191aa 7003	moveq	#3,d0
000191ac c0280022	and.b	obStatus(a0),d0
000191b0 022800fc0001	andi.b	#$FC,obRender(a0)
000191b6 81280001	or.b	d0,obRender(a0)
000191ba 4ef90000d604	jmp	(DisplaySprite).l
000191cc 317cff000010	move.w	#-$100,obVelX(a0)
000191d2 0c682d380030	cmpi.w	#boss_syz_x+$138,obBossX(a0)
000191d8 6404	bhs.s	loc_191DE
000191da 54280025	addq.b	#2,ob2ndRout(a0)
000191de 1028003f	move.b	objoff_3F(a0),d0
000191e2 5428003f	addq.b	#2,objoff_3F(a0)
000191e6 4eb9000029da	jsr	(CalcSine).l
000191ec e440	asr.w	#2,d0
000191ee 31400012	move.w	d0,obVelY(a0)
000191f2 6100e6b0	bsr.w	BossMove
000191f6 31680038000c	move.w	obBossY(a0),obY(a0)
000191fc 316800300008	move.w	obBossX(a0),obX(a0)
00019202 30280008	move.w	obX(a0),d0
00019206 04402c00	subi.w	#boss_syz_x,d0
0001920a ea48	lsr.w	#5,d0
0001920c 11400034	move.b	d0,objoff_34(a0)
00019210 0c2800060025	cmpi.b	#6,ob2ndRout(a0)
00019216 643e	bhs.s	locret_19256
00019218 4a280022	tst.b	obStatus(a0)
0001921c 6b3a	bmi.s	loc_19258
0001921e 4a280020	tst.b	obColType(a0)
00019222 6632	bne.s	locret_19256
00019224 4a28003e	tst.b	obBossFlash(a0)
00019228 6610	bne.s	loc_1923A
0001922a 117c0020003e	move.b	#$20,obBossFlash(a0)
00019230 303c00ac	move.w	#sfx_HitBoss,d0
00019234 4eb90000139c	jsr	(QueueSound2).l
0001923a 43f8fb22	lea	(v_palette+$22).w,a1
0001923e 7000	moveq	#0,d0
00019240 4a51	tst.w	(a1)
00019242 6604	bne.s	loc_19248
00019244 303c0eee	move.w	#cWhite,d0
00019248 3280	move.w	d0,(a1)
0001924a 5328003e	subq.b	#1,obBossFlash(a0)
0001924e 6606	bne.s	locret_19256
00019250 117c000f0020	move.b	#$F,obColType(a0)
00019256 4e75	rts	
00019258 7064	moveq	#100,d0
0001925a 61003430	bsr.w	AddPoints
0001925e 117c00060025	move.b	#6,ob2ndRout(a0)
00019264 317c00b4003c	move.w	#$B4,objoff_3C(a0)
0001926a 42680010	clr.w	obVelX(a0)
0001926e 4e75	rts	
00019270 30280030	move.w	obBossX(a0),d0
00019274 317c01400010	move.w	#$140,obVelX(a0)
0001927a 082800000022	btst	#0,obStatus(a0)
00019280 660c	bne.s	loc_1928E
00019282 44680010	neg.w	obVelX(a0)
00019286 0c402c08	cmpi.w	#boss_syz_x+8,d0
0001928a 6e12	bgt.s	loc_1929E
0001928c 6006	bra.s	loc_19294
0001928e 0c402d38	cmpi.w	#boss_syz_x+$138,d0
00019292 6d0a	blt.s	loc_1929E
00019294 086800000022	bchg	#0,obStatus(a0)
0001929a 4228003d	clr.b	objoff_3D(a0)
0001929e 04402c10	subi.w	#boss_syz_x+$10,d0
000192a2 0240001f	andi.w	#$1F,d0
000192a6 0440001f	subi.w	#$1F,d0
000192aa 6a02	bpl.s	loc_192AE
000192ac 4440	neg.w	d0
000192ae 5340	subq.w	#1,d0
000192b0 6e36	bgt.s	loc_192E8
000192b2 4a28003d	tst.b	objoff_3D(a0)
000192b6 6630	bne.s	loc_192E8
000192b8 3238d008	move.w	(v_player+obX).w,d1
000192bc 04412c00	subi.w	#boss_syz_x,d1
000192c0 ea41	asr.w	#5,d1
000192c2 b2280034	cmp.b	objoff_34(a0),d1
000192c6 6620	bne.s	loc_192E8
000192c8 7000	moveq	#0,d0
000192ca 10280034	move.b	objoff_34(a0),d0
000192ce eb40	asl.w	#5,d0
000192d0 06402c10	addi.w	#boss_syz_x+$10,d0
000192d4 31400030	move.w	d0,obBossX(a0)
000192d8 61000170	bsr.w	BossSpringYard_FindBlocks
000192dc 54280025	addq.b	#2,ob2ndRout(a0)
000192e0 42680028	clr.w	obSubtype(a0)
000192e4 42680010	clr.w	obVelX(a0)
000192e8 6000fef4	bra.w	loc_191DE
000192ec 7000	moveq	#0,d0
000192ee 10280028	move.b	obSubtype(a0),d0
000192f2 303b0006	move.w	off_192FA(pc,d0.w),d0
000192f6 4efb0002	jmp	off_192FA(pc,d0.w)
00019302 317c01800012	move.w	#$180,obVelY(a0)
00019308 30280038	move.w	obBossY(a0),d0
0001930c 0c400556	cmpi.w	#boss_syz_y+$8A,d0
00019310 6532	blo.s	loc_19344
00019312 317c05560038	move.w	#boss_syz_y+$8A,obBossY(a0)
00019318 4268003c	clr.w	objoff_3C(a0)
0001931c 70ff	moveq	#-1,d0
0001931e 30280036	move.w	objoff_36(a0),d0
00019322 6718	beq.s	loc_1933C
00019324 2240	movea.l	d0,a1
00019326 137c00ff0029	move.b	#-1,objoff_29(a1)
0001932c 117c00ff0029	move.b	#-1,objoff_29(a0)
00019332 23480034	move.l	a0,objoff_34(a1)
00019336 317c0032003c	move.w	#$32,objoff_3C(a0)
0001933c 42680012	clr.w	obVelY(a0)
00019340 54280028	addq.b	#2,obSubtype(a0)
00019344 6000feac	bra.w	loc_191F2
00019348 5368003c	subq.w	#1,objoff_3C(a0)
0001934c 6a18	bpl.s	loc_19366
0001934e 54280028	addq.b	#2,obSubtype(a0)
00019352 317cf8000012	move.w	#-$800,obVelY(a0)
00019358 4a680036	tst.w	objoff_36(a0)
0001935c 6604	bne.s	loc_19362
0001935e e0e80012	asr.w	obVelY(a0)
00019362 7000	moveq	#0,d0
00019364 6016	bra.s	loc_1937C
00019366 7000	moveq	#0,d0
00019368 0c68001e003c	cmpi.w	#$1E,objoff_3C(a0)
0001936e 6e0c	bgt.s	loc_1937C
00019370 7002	moveq	#2,d0
00019372 08280001003d	btst	#1,objoff_3D(a0)
00019378 6702	beq.s	loc_1937C
0001937a 4440	neg.w	d0
0001937c d0680038	add.w	obBossY(a0),d0
00019380 3140000c	move.w	d0,obY(a0)
00019384 316800300008	move.w	obBossX(a0),obX(a0)
0001938a 6000fe76	bra.w	loc_19202
0001938e 303c04da	move.w	#boss_syz_y+$E,d0
00019392 4a680036	tst.w	objoff_36(a0)
00019396 6704	beq.s	loc_1939C
00019398 04400018	subi.w	#$18,d0
0001939c b0680038	cmp.w	obBossY(a0),d0
000193a0 6d1c	blt.s	loc_193BE
000193a2 317c0008003c	move.w	#8,objoff_3C(a0)
000193a8 4a680036	tst.w	objoff_36(a0)
000193ac 6706	beq.s	loc_193B4
000193ae 317c002d003c	move.w	#$2D,objoff_3C(a0)
000193b4 54280028	addq.b	#2,obSubtype(a0)
000193b8 42680012	clr.w	obVelY(a0)
000193bc 600e	bra.s	loc_193CC
000193be 0c68ffc00012	cmpi.w	#-$40,obVelY(a0)
000193c4 6c06	bge.s	loc_193CC
000193c6 0668000c0012	addi.w	#$C,obVelY(a0)
000193cc 6000fe24	bra.w	loc_191F2
000193d0 5368003c	subq.w	#1,objoff_3C(a0)
000193d4 6e30	bgt.s	loc_19406
000193d6 6b16	bmi.s	loc_193EE
000193d8 70ff	moveq	#-1,d0
000193da 30280036	move.w	objoff_36(a0),d0
000193de 6708	beq.s	loc_193E8
000193e0 2240	movea.l	d0,a1
000193e2 137c000a0029	move.b	#$A,objoff_29(a1)
000193e8 42680036	clr.w	objoff_36(a0)
000193ec 6018	bra.s	loc_19406
000193ee 0c68ffe2003c	cmpi.w	#-$1E,objoff_3C(a0)
000193f4 6610	bne.s	loc_19406
000193f6 42280029	clr.b	objoff_29(a0)
000193fa 55280025	subq.b	#2,ob2ndRout(a0)
000193fe 117c00ff003d	move.b	#-1,objoff_3D(a0)
00019404 6040	bra.s	loc_19446
00019406 7001	moveq	#1,d0
00019408 4a680036	tst.w	objoff_36(a0)
0001940c 6702	beq.s	loc_19410
0001940e 7002	moveq	#2,d0
00019410 0c6804da0038	cmpi.w	#boss_syz_y+$E,obBossY(a0)
00019416 670c	beq.s	loc_19424
00019418 6d02	blt.s	loc_1941C
0001941a 4440	neg.w	d0
0001941c 4a680036	tst.w	objoff_36(a0)
00019420 d1680038	add.w	d0,obBossY(a0)
00019424 7000	moveq	#0,d0
00019426 4a680036	tst.w	objoff_36(a0)
0001942a 670c	beq.s	loc_19438
0001942c 7002	moveq	#2,d0
0001942e 08280000003d	btst	#0,objoff_3D(a0)
00019434 6702	beq.s	loc_19438
00019436 4440	neg.w	d0
00019438 d0680038	add.w	obBossY(a0),d0
0001943c 3140000c	move.w	d0,obY(a0)
00019440 316800300008	move.w	obBossX(a0),obX(a0)
00019446 6000fdba	bra.w	loc_19202
0001944a 42680036	clr.w	objoff_36(a0)
0001944e 43f8d040	lea	(v_objspace+object_size*1).w,a1
00019452 703e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d0
00019454 7276	moveq	#id_BossBlock,d1
00019456 14280034	move.b	objoff_34(a0),d2
0001945a b211	cmp.b	obID(a1),d1
0001945c 660c	bne.s	loc_1946A
0001945e b4290028	cmp.b	obSubtype(a1),d2
00019462 6606	bne.s	loc_1946A
00019464 31490036	move.w	a1,objoff_36(a0)
00019468 6008	bra.s	locret_19472
0001946a 43e90040	lea	object_size(a1),a1
0001946e 51c8ffea	dbf	d0,BossSpringYard_FindLoop
00019472 4e75	rts	
00019474 5368003c	subq.w	#1,objoff_3C(a0)
00019478 6b04	bmi.s	loc_1947E
0001947a 6000e3e4	bra.w	BossDefeated
0001947e 54280025	addq.b	#2,ob2ndRout(a0)
00019482 42680012	clr.w	obVelY(a0)
00019486 08e800000022	bset	#0,obStatus(a0)
0001948c 08a800070022	bclr	#7,obStatus(a0)
00019492 42680010	clr.w	obVelX(a0)
00019496 317cffff003c	move.w	#-1,objoff_3C(a0)
0001949c 4a38f7a7	tst.b	(v_bossstatus).w
000194a0 6606	bne.s	loc_194A8
000194a2 11fc0001f7a7	move.b	#1,(v_bossstatus).w
000194a8 6000fd58	bra.w	loc_19202
000194ac 5268003c	addq.w	#1,objoff_3C(a0)
000194b0 670a	beq.s	loc_194BC
000194b2 6a0e	bpl.s	loc_194C2
000194b4 066800180012	addi.w	#$18,obVelY(a0)
000194ba 6032	bra.s	loc_194EE
000194bc 42680012	clr.w	obVelY(a0)
000194c0 602c	bra.s	loc_194EE
000194c2 0c680020003c	cmpi.w	#$20,objoff_3C(a0)
000194c8 6510	blo.s	loc_194DA
000194ca 6714	beq.s	loc_194E0
000194cc 0c68002a003c	cmpi.w	#$2A,objoff_3C(a0)
000194d2 651a	blo.s	loc_194EE
000194d4 54280025	addq.b	#2,ob2ndRout(a0)
000194d8 6014	bra.s	loc_194EE
000194da 51680012	subq.w	#8,obVelY(a0)
000194de 600e	bra.s	loc_194EE
000194e0 42680012	clr.w	obVelY(a0)
000194e4 303c0085	move.w	#bgm_SYZ,d0
000194e8 4eb900001396	jsr	(QueueSound1).l
000194ee 6000fd02	bra.w	loc_191F2
000194f2 317c04000010	move.w	#$400,obVelX(a0)
000194f8 317cffc00012	move.w	#-$40,obVelY(a0)
000194fe 0c782d40f72a	cmpi.w	#boss_syz_end,(v_limitright2).w
00019504 6406	bhs.s	loc_1950C
00019506 5478f72a	addq.w	#2,(v_limitright2).w
0001950a 6006	bra.s	loc_19512
0001950c 4a280001	tst.b	obRender(a0)
00019510 6a08	bpl.s	BossSpringYard_ShipDelete
00019512 6100e390	bsr.w	BossMove
00019516 6000fcc6	bra.w	loc_191DE
0001951a 4ef90000d640	jmp	(DeleteObject).l
00019520 7201	moveq	#1,d1
00019522 22680034	movea.l	objoff_34(a0),a1
00019526 7000	moveq	#0,d0
00019528 10290025	move.b	ob2ndRout(a1),d0
0001952c 303b0018	move.w	off_19546(pc,d0.w),d0
00019530 4ebb0014	jsr	off_19546(pc,d0.w)
00019534 1141001c	move.b	d1,obAnim(a0)
00019538 1010	move.b	(a0),d0
0001953a b011	cmp.b	(a1),d0
0001953c 6602	bne.s	BossSpringYard_FaceDelete
0001953e 607e	bra.s	loc_195BE
00019540 4ef90000d640	jmp	(DeleteObject).l
00019552 720a	moveq	#$A,d1
00019554 4e75	rts	
00019556 7206	moveq	#6,d1
00019558 4e75	rts	
0001955a 7000	moveq	#0,d0
0001955c 10290028	move.b	obSubtype(a1),d0
00019560 303b0006	move.w	off_19568(pc,d0.w),d0
00019564 4efb0002	jmp	off_19568(pc,d0.w)
00019570 6002	bra.s	BSYZ_Face_ChkHit
00019572 7206	moveq	#6,d1
00019574 4a290020	tst.b	obColType(a1)
00019578 6604	bne.s	loc_1957E
0001957a 7205	moveq	#5,d1
0001957c 4e75	rts	
0001957e 0c380004d024	cmpi.b	#4,(v_player+obRoutine).w
00019584 6502	blo.s	locret_19588
00019586 7204	moveq	#4,d1
00019588 4e75	rts	
0001958a 117c0007001c	move.b	#7,obAnim(a0)
00019590 22680034	movea.l	objoff_34(a0),a1
00019594 0c29000a0025	cmpi.b	#$A,ob2ndRout(a1)
0001959a 660e	bne.s	loc_195AA
0001959c 117c000b001c	move.b	#$B,obAnim(a0)
000195a2 4a280001	tst.b	obRender(a0)
000195a6 6a10	bpl.s	BossSpringYard_FlameDelete
000195a8 600c	bra.s	loc_195B6
000195aa 4a690010	tst.w	obVelX(a1)
000195ae 6706	beq.s	loc_195B6
000195b0 117c0008001c	move.b	#8,obAnim(a0)
000195b6 6006	bra.s	loc_195BE
000195b8 4ef90000d640	jmp	(DeleteObject).l
000195be 43f900017cbc	lea	(Ani_Eggman).l,a1
000195c4 4eb90000a718	jsr	(AnimateSprite).l
000195ca 22680034	movea.l	objoff_34(a0),a1
000195ce 316900080008	move.w	obX(a1),obX(a0)
000195d4 3169000c000c	move.w	obY(a1),obY(a0)
000195da 116900220022	move.b	obStatus(a1),obStatus(a0)
000195e0 7003	moveq	#3,d0
000195e2 c0280022	and.b	obStatus(a0),d0
000195e6 022800fc0001	andi.b	#$FC,obRender(a0)
000195ec 81280001	or.b	d0,obRender(a0)
000195f0 4ef90000d604	jmp	(DisplaySprite).l
000195f6 217c00017dd40004	move.l	#Map_BossItems,obMap(a0)
000195fe 317c246c0002	move.w	#ArtTile_Eggman_Weapons|Tile_Pal2,obGfx(a0)
00019604 117c0005001a	move.b	#5,obFrame(a0)
0001960a 22680034	movea.l	objoff_34(a0),a1
0001960e 0c29000a0025	cmpi.b	#$A,ob2ndRout(a1)
00019614 6606	bne.s	loc_1961C
00019616 4a280001	tst.b	obRender(a0)
0001961a 6a70	bpl.s	BossSpringYard_SpikeDelete
0001961c 316900080008	move.w	obX(a1),obX(a0)
00019622 3169000c000c	move.w	obY(a1),obY(a0)
00019628 3028003c	move.w	objoff_3C(a0),d0
0001962c 0c2900040025	cmpi.b	#4,ob2ndRout(a1)
00019632 661e	bne.s	loc_19652
00019634 0c2900060028	cmpi.b	#6,obSubtype(a1)
0001963a 6710	beq.s	loc_1964C
0001963c 4a290028	tst.b	obSubtype(a1)
00019640 6616	bne.s	loc_19658
00019642 0c400094	cmpi.w	#$94,d0
00019646 6c10	bge.s	loc_19658
00019648 5e40	addq.w	#7,d0
0001964a 600c	bra.s	loc_19658
0001964c 4a69003c	tst.w	objoff_3C(a1)
00019650 6a06	bpl.s	loc_19658
00019652 4a40	tst.w	d0
00019654 6f02	ble.s	loc_19658
00019656 5b40	subq.w	#5,d0
00019658 3140003c	move.w	d0,objoff_3C(a0)
0001965c e440	asr.w	#2,d0
0001965e d168000c	add.w	d0,obY(a0)
00019662 117c00080019	move.b	#8,obActWid(a0)
00019668 117c000c0016	move.b	#$C,obHeight(a0)
0001966e 42280020	clr.b	obColType(a0)
00019672 22680034	movea.l	objoff_34(a0),a1
00019676 4a290020	tst.b	obColType(a1)
0001967a 670c	beq.s	loc_19688
0001967c 4a290029	tst.b	objoff_29(a1)
00019680 6606	bne.s	loc_19688
00019682 117c00840020	move.b	#$84,obColType(a0)
00019688 6000ff50	bra.w	loc_195DA
0001968c 4ef90000d640	jmp	(DeleteObject).l
00019692 7000	moveq	#0,d0
00019694 10280024	move.b	obRoutine(a0),d0
00019698 323b0006	move.w	BossBlock_Index(pc,d0.w),d1
0001969c 4efb1002	jmp	BossBlock_Index(pc,d1.w)
000196a6 7800	moveq	#0,d4
000196a8 3a3c2c10	move.w	#boss_syz_x+$10,d5
000196ac 7c09	moveq	#9,d6
000196ae 43d0	lea	(a0),a1
000196b0 6008	bra.s	BossBlock_MakeBlock
000196b2 4eb90000da8c	jsr	(FindFreeObj).l
000196b8 6648	bne.s	BossBlock_ExitLoop
000196ba 12bc0076	move.b	#id_BossBlock,obID(a1)
000196be 237c000197fe0004	move.l	#Map_BossBlock,obMap(a1)
000196c6 337c40000002	move.w	#ArtTile_Level|Tile_Pal3,obGfx(a1)
000196cc 137c00040001	move.b	#4,obRender(a1)
000196d2 137c00100019	move.b	#$10,obActWid(a1)
000196d8 137c00100016	move.b	#$10,obHeight(a1)
000196de 137c00030018	move.b	#3,obPriority(a1)
000196e4 33450008	move.w	d5,obX(a1)
000196e8 337c0582000c	move.w	#$582,obY(a1)
000196ee 33440028	move.w	d4,obSubtype(a1)
000196f2 06440101	addi.w	#$101,d4
000196f6 06450020	addi.w	#$20,d5
000196fa 54290024	addq.b	#2,obRoutine(a1)
000196fe 51ceffb2	dbf	d6,BossBlock_Loop
00019702 4e75	rts	
00019704 10280029	move.b	objoff_29(a0),d0
00019708 b0280028	cmp.b	obSubtype(a0),d0
0001970c 6738	beq.s	BossBlock_Solid
0001970e 4a00	tst.b	d0
00019710 6b06	bmi.s	loc_19718
00019712 61000066	bsr.w	BossBlock_Break
00019716 6044	bra.s	BossBlock_Display
00019718 22680034	movea.l	objoff_34(a0),a1
0001971c 4a290021	tst.b	obBossHits(a1)
00019720 67f0	beq.s	loc_19712
00019722 316900080008	move.w	obX(a1),obX(a0)
00019728 3169000c000c	move.w	obY(a1),obY(a0)
0001972e 0668002c000c	addi.w	#$2C,obY(a0)
00019734 b2c8	cmpa.w	a0,a1
00019736 6524	blo.s	BossBlock_Display
00019738 30290012	move.w	obVelY(a1),d0
0001973c 48c0	ext.l	d0
0001973e e080	asr.l	#8,d0
00019740 d168000c	add.w	d0,obY(a0)
00019744 6016	bra.s	BossBlock_Display
00019746 323c001b	move.w	#$1B,d1
0001974a 343c0010	move.w	#$10,d2
0001974e 363c0011	move.w	#$11,d3
00019752 38280008	move.w	obX(a0),d4
00019756 4eb90000f9d6	jsr	(SolidObject).l
0001975c 4ef90000d604	jmp	(DisplaySprite).l
00019762 4a280001	tst.b	obRender(a0)
00019766 6a0c	bpl.s	BossBlock_Delete
00019768 4eb90000d5b2	jsr	(ObjectFall).l
0001976e 4ef90000d604	jmp	(DisplaySprite).l
00019774 4ef90000d640	jmp	(DeleteObject).l
0001977a 49fa0062	lea	BossBlock_FragSpeed(pc),a4
0001977e 4bfa006e	lea	BossBlock_FragPos(pc),a5
00019782 7801	moveq	#1,d4
00019784 7203	moveq	#3,d1
00019786 7438	moveq	#$38,d2
00019788 54280024	addq.b	#2,obRoutine(a0)
0001978c 117c00080019	move.b	#8,obActWid(a0)
00019792 117c00080016	move.b	#8,obHeight(a0)
00019798 43d0	lea	(a0),a1
0001979a 6008	bra.s	BossBlock_MakeFrag
0001979c 4eb90000daa2	jsr	(FindNextFreeObj).l
000197a2 6630	bne.s	loc_197D4
000197a4 45d0	lea	(a0),a2
000197a6 47d1	lea	(a1),a3
000197a8 7603	moveq	#3,d3
000197aa 26da	move.l	(a2)+,(a3)+
000197ac 26da	move.l	(a2)+,(a3)+
000197ae 26da	move.l	(a2)+,(a3)+
000197b0 26da	move.l	(a2)+,(a3)+
000197b2 51cbfff6	dbf	d3,loc_197AA
000197b6 335c0010	move.w	(a4)+,obVelX(a1)
000197ba 335c0012	move.w	(a4)+,obVelY(a1)
000197be 361d	move.w	(a5)+,d3
000197c0 d7690008	add.w	d3,obX(a1)
000197c4 361d	move.w	(a5)+,d3
000197c6 d769000c	add.w	d3,obY(a1)
000197ca 1344001a	move.b	d4,obFrame(a1)
000197ce 5244	addq.w	#1,d4
000197d0 51c9ffca	dbf	d1,BossBlock_LoopFrag
000197d4 303c00cb	move.w	#sfx_WallSmash,d0
000197d8 4ef90000139c	jmp	(QueueSound2).l
0001982c 4ef90000d640	jmp	(DeleteObject).l
00019832 7000	moveq	#0,d0
00019834 10280024	move.b	obRoutine(a0),d0
00019838 323b0006	move.w	SEgg_Index(pc,d0.w),d1
0001983c 4efb1002	jmp	SEgg_Index(pc,d1.w)
0001984c 45fafff8	lea	SEgg_ObjData(pc),a2
00019850 317c21600008	move.w	#boss_sbz2_x+$110,obX(a0)
00019856 317c05a4000c	move.w	#boss_sbz2_y+$94,obY(a0)
0001985c 117c000f0020	move.b	#$F,obColType(a0)
00019862 117c00100021	move.b	#16,obBossHits(a0)
00019868 08a800000022	bclr	#0,obStatus(a0)
0001986e 42280025	clr.b	ob2ndRout(a0)
00019872 115a0024	move.b	(a2)+,obRoutine(a0)
00019876 115a001c	move.b	(a2)+,obAnim(a0)
0001987a 115a0018	move.b	(a2)+,obPriority(a0)
0001987e 217c00019a340004	move.l	#Map_SEgg,obMap(a0)
00019886 317c04000002	move.w	#ArtTile_Eggman,obGfx(a0)
0001988c 117c00040001	move.b	#4,obRender(a0)
00019892 08e800070001	bset	#7,obRender(a0)
00019898 117c00200019	move.b	#$20,obActWid(a0)
0001989e 4eb90000daa2	jsr	(FindNextFreeObj).l
000198a4 664a	bne.s	SEgg_Eggman
000198a6 23480034	move.l	a0,objoff_34(a1)
000198aa 12bc0082	move.b	#id_ScrapEggman,obID(a1)
000198ae 337c21300008	move.w	#boss_sbz2_x+$E0,obX(a1)
000198b4 337c05bc000c	move.w	#boss_sbz2_y+$AC,obY(a1)
000198ba 42280025	clr.b	ob2ndRout(a0)
000198be 135a0024	move.b	(a2)+,obRoutine(a1)
000198c2 135a001c	move.b	(a2)+,obAnim(a1)
000198c6 135a0018	move.b	(a2)+,obPriority(a1)
000198ca 237c0000bea40004	move.l	#Map_But,obMap(a1)
000198d2 337c04a40002	move.w	#ArtTile_Eggman_Button,obGfx(a1)
000198d8 137c00040001	move.b	#4,obRender(a1)
000198de 08e900070001	bset	#7,obRender(a1)
000198e4 137c00100019	move.b	#$10,obActWid(a1)
000198ea 137c0000001a	move.b	#0,obFrame(a1)
000198f0 7000	moveq	#0,d0
000198f2 10280025	move.b	ob2ndRout(a0),d0
000198f6 323b0016	move.w	SEgg_EggIndex(pc,d0.w),d1
000198fa 4ebb1012	jsr	SEgg_EggIndex(pc,d1.w)
000198fe 43fa0102	lea	Ani_SEgg(pc),a1
00019902 4eb90000a718	jsr	(AnimateSprite).l
00019908 4ef90000d604	jmp	(DisplaySprite).l
00019916 30280008	move.w	obX(a0),d0
0001991a 9078d008	sub.w	(v_player+obX).w,d0
0001991e 0c400080	cmpi.w	#128,d0
00019922 6410	bhs.s	SEgg_Move
00019924 54280025	addq.b	#2,ob2ndRout(a0)
00019928 317c00b4003c	move.w	#180,objoff_3C(a0)
0001992e 117c0001001c	move.b	#1,obAnim(a0)
00019934 4ef90000d5de	jmp	(SpeedToPos).l
0001993a 5368003c	subq.w	#1,objoff_3C(a0)
0001993e 6614	bne.s	loc_19954
00019940 54280025	addq.b	#2,ob2ndRout(a0)
00019944 117c0002001c	move.b	#2,obAnim(a0)
0001994a 5868000c	addq.w	#4,obY(a0)
0001994e 317c000f003c	move.w	#15,objoff_3C(a0)
00019954 60de	bra.s	SEgg_Move
00019956 5368003c	subq.w	#1,objoff_3C(a0)
0001995a 6e74	bgt.s	loc_199D0
0001995c 660c	bne.s	loc_1996A
0001995e 317cff040010	move.w	#-$FC,obVelX(a0)
00019964 317cfc400012	move.w	#-$3C0,obVelY(a0)
0001996a 0c6821320008	cmpi.w	#boss_sbz2_x+$E2,obX(a0)
00019970 6e04	bgt.s	loc_19976
00019972 42680010	clr.w	obVelX(a0)
00019976 066800240012	addi.w	#$24,obVelY(a0)
0001997c 4a680012	tst.w	obVelY(a0)
00019980 6b20	bmi.s	SEgg_FindBlocks
00019982 0c680595000c	cmpi.w	#boss_sbz2_y+$85,obY(a0)
00019988 6518	blo.s	SEgg_FindBlocks
0001998a 317c53570028	move.w	#"SW",obSubtype(a0)
00019990 0c68059b000c	cmpi.w	#boss_sbz2_y+$8B,obY(a0)
00019996 650a	blo.s	SEgg_FindBlocks
00019998 317c059b000c	move.w	#boss_sbz2_y+$8B,obY(a0)
0001999e 42680012	clr.w	obVelY(a0)
000199a2 30280010	move.w	obVelX(a0),d0
000199a6 80680012	or.w	obVelY(a0),d0
000199aa 6624	bne.s	loc_199D0
000199ac 43f8d000	lea	(v_objspace).w,a1
000199b0 703e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d0
000199b2 7240	moveq	#object_size,d1
000199b4 d2c1	adda.w	d1,a1
000199b6 0c110083	cmpi.b	#id_FalseFloor,obID(a1)
000199ba 57c8fff8	dbeq	d0,SEgg_FindLoop
000199be 6610	bne.s	loc_199D0
000199c0 337c474f0028	move.w	#"GO",obSubtype(a1)
000199c6 54280025	addq.b	#2,ob2ndRout(a0)
000199ca 117c0001001c	move.b	#1,obAnim(a0)
000199d0 6000ff62	bra.w	SEgg_Move
000199d4 7000	moveq	#0,d0
000199d6 10280025	move.b	ob2ndRout(a0),d0
000199da 303b0006	move.w	SEgg_SwIndex(pc,d0.w),d0
000199de 4efb0002	jmp	SEgg_SwIndex(pc,d0.w)
000199e6 22680034	movea.l	objoff_34(a0),a1
000199ea 0c6953570028	cmpi.w	#"SW",obSubtype(a1)
000199f0 660a	bne.s	SEgg_SwDisplay
000199f2 117c0001001a	move.b	#1,obFrame(a0)
000199f8 54280025	addq.b	#2,ob2ndRout(a0)
000199fc 4ef90000d604	jmp	(DisplaySprite).l
00019b60 7000	moveq	#0,d0
00019b62 10280024	move.b	obRoutine(a0),d0
00019b66 323b0006	move.w	FFloor_Index(pc,d0.w),d1
00019b6a 4efb1002	jmp	FFloor_Index(pc,d1.w)
00019b7a 317c20800008	move.w	#boss_sbz2_x+$30,obX(a0)
00019b80 317c05d0000c	move.w	#boss_sbz2_y+$C0,obY(a0)
00019b86 117c00800019	move.b	#$80,obActWid(a0)
00019b8c 117c00100016	move.b	#$10,obHeight(a0)
00019b92 117c00040001	move.b	#4,obRender(a0)
00019b98 08e800070001	bset	#7,obRender(a0)
00019b9e 7800	moveq	#0,d4
00019ba0 3a3c2010	move.w	#boss_sbz2_x-$40,d5
00019ba4 7c07	moveq	#7,d6
00019ba6 45e80030	lea	objoff_30(a0),a2
00019baa 4eb90000da8c	jsr	(FindFreeObj).l
00019bb0 6644	bne.s	FFloor_ExitMake
00019bb2 34c9	move.w	a1,(a2)+
00019bb4 12bc0083	move.b	#id_FalseFloor,obID(a1)
00019bb8 237c00019d120004	move.l	#Map_FFloor,obMap(a1)
00019bc0 337c45180002	move.w	#ArtTile_Eggman_Trap_Floor|Tile_Pal3,obGfx(a1)
00019bc6 137c00040001	move.b	#4,obRender(a1)
00019bcc 137c00100019	move.b	#$10,obActWid(a1)
00019bd2 137c00100016	move.b	#$10,obHeight(a1)
00019bd8 137c00030018	move.b	#3,obPriority(a1)
00019bde 33450008	move.w	d5,obX(a1)
00019be2 337c05d0000c	move.w	#boss_sbz2_y+$C0,obY(a1)
00019be8 06450020	addi.w	#$20,d5
00019bec 137c00080024	move.b	#8,obRoutine(a1)
00019bf2 51ceffb6	dbf	d6,FFloor_MakeBlock
00019bf6 54280024	addq.b	#2,obRoutine(a0)
00019bfa 4e75	rts	
00019bfc 0c68474f0028	cmpi.w	#"GO",obSubtype(a0)
00019c02 6608	bne.s	FFloor_Solid
00019c04 4228001a	clr.b	obFrame(a0)
00019c08 54280024	addq.b	#2,obRoutine(a0)
00019c0c 7000	moveq	#0,d0
00019c0e 1028001a	move.b	obFrame(a0),d0
00019c12 4400	neg.b	d0
00019c14 4880	ext.w	d0
00019c16 5040	addq.w	#8,d0
00019c18 e940	asl.w	#4,d0
00019c1a 383c2100	move.w	#boss_sbz2_x+$B0,d4
00019c1e 9840	sub.w	d0,d4
00019c20 11400019	move.b	d0,obActWid(a0)
00019c24 31440008	move.w	d4,obX(a0)
00019c28 720b	moveq	#$B,d1
00019c2a d240	add.w	d0,d1
00019c2c 7410	moveq	#$10,d2
00019c2e 7611	moveq	#$11,d3
00019c30 4ef90000f9d6	jmp	(SolidObject).l
00019c36 0428000e001e	subi.b	#$E,obTimeFrame(a0)
00019c3c 6422	bcc.s	FFloor_Solid2
00019c3e 70ff	moveq	#-1,d0
00019c40 1028001a	move.b	obFrame(a0),d0
00019c44 4880	ext.w	d0
00019c46 d040	add.w	d0,d0
00019c48 30300030	move.w	objoff_30(a0,d0.w),d0
00019c4c 2240	movea.l	d0,a1
00019c4e 337c474f0028	move.w	#"GO",obSubtype(a1)
00019c54 5228001a	addq.b	#1,obFrame(a0)
00019c58 0c280008001a	cmpi.b	#8,obFrame(a0)
00019c5e 6702	beq.s	FFloor_AllGone
00019c60 60aa	bra.s	FFloor_Solid
00019c62 08a800030022	bclr	#3,obStatus(a0)
00019c68 08b80003d022	bclr	#3,(v_player+obStatus).w
00019c6e 6000fbbc	bra.w	FalseFloor_Delete
00019c72 0c68474f0028	cmpi.w	#"GO",obSubtype(a0)
00019c78 671a	beq.s	FFloor_BlockBreak
00019c7a 4ef90000d604	jmp	(DisplaySprite).l
00019c80 4a280001	tst.b	obRender(a0)
00019c84 6a00fba6	bpl.w	FalseFloor_Delete
00019c88 4eb90000d5b2	jsr	(ObjectFall).l
00019c8e 4ef90000d604	jmp	(DisplaySprite).l
00019c94 49fa0064	lea	FFloor_FragSpeed(pc),a4
00019c98 4bfa0068	lea	FFloor_FragPos(pc),a5
00019c9c 7801	moveq	#1,d4
00019c9e 7203	moveq	#3,d1
00019ca0 7438	moveq	#$38,d2
00019ca2 54280024	addq.b	#2,obRoutine(a0)
00019ca6 117c00080019	move.b	#8,obActWid(a0)
00019cac 117c00080016	move.b	#8,obHeight(a0)
00019cb2 43d0	lea	(a0),a1
00019cb4 6008	bra.s	FFloor_MakeFrag
00019cb6 4eb90000daa2	jsr	(FindNextFreeObj).l
00019cbc 662c	bne.s	FFloor_BreakSnd
00019cbe 45d0	lea	(a0),a2
00019cc0 47d1	lea	(a1),a3
00019cc2 7603	moveq	#3,d3
00019cc4 26da	move.l	(a2)+,(a3)+
00019cc6 26da	move.l	(a2)+,(a3)+
00019cc8 26da	move.l	(a2)+,(a3)+
00019cca 26da	move.l	(a2)+,(a3)+
00019ccc 51cbfff6	dbf	d3,loc_19CC4
00019cd0 335c0012	move.w	(a4)+,obVelY(a1)
00019cd4 361d	move.w	(a5)+,d3
00019cd6 d7690008	add.w	d3,obX(a1)
00019cda 361d	move.w	(a5)+,d3
00019cdc d769000c	add.w	d3,obY(a1)
00019ce0 1344001a	move.b	d4,obFrame(a1)
00019ce4 5244	addq.w	#1,d4
00019ce6 51c9ffce	dbf	d1,FFloor_LoopFrag
00019cea 303c00cb	move.w	#sfx_WallSmash,d0
00019cee 4eb90000139c	jsr	(QueueSound2).l
00019cf4 4ef90000d604	jmp	(DisplaySprite).l
00019d52 4ef90000d640	jmp	(DeleteObject).l
00019d58 7000	moveq	#0,d0
00019d5a 10280024	move.b	obRoutine(a0),d0
00019d5e 303b0006	move.w	BossFinal_Index(pc,d0.w),d0
00019d62 4efb0002	jmp	BossFinal_Index(pc,d0.w)
00019dce 45faffa4	lea	BossFinal_ObjData(pc),a2
00019dd2 47faffdc	lea	BossFinal_ObjData2(pc),a3
00019dd6 2248	movea.l	a0,a1
00019dd8 7205	moveq	#5,d1
00019dda 6008	bra.s	BossFinal_LoadBoss
00019ddc 4eb90000daa2	jsr	(FindNextFreeObj).l
00019de2 663c	bne.s	loc_19E20
00019de4 12bc0085	move.b	#id_BossFinal,obID(a1)
00019de8 335a0008	move.w	(a2)+,obX(a1)
00019dec 335a000c	move.w	(a2)+,obY(a1)
00019df0 335a0002	move.w	(a2)+,obGfx(a1)
00019df4 235a0004	move.l	(a2)+,obMap(a1)
00019df8 135b0024	move.b	(a3)+,obRoutine(a1)
00019dfc 135b001c	move.b	(a3)+,obAnim(a1)
00019e00 135b0018	move.b	(a3)+,obPriority(a1)
00019e04 135b0017	move.b	(a3)+,obWidth(a1)
00019e08 135b0016	move.b	(a3)+,obHeight(a1)
00019e0c 137c00040001	move.b	#4,obRender(a1)
00019e12 08e800070001	bset	#7,obRender(a0)
00019e18 23480034	move.l	a0,objoff_34(a1)
00019e1c 51c9ffbe	dbf	d1,BossFinal_Loop
00019e20 45e80036	lea	objoff_36(a0),a2
00019e24 4eb90000da8c	jsr	(FindFreeObj).l
00019e2a 662e	bne.s	loc_19E5A
00019e2c 12bc0086	move.b	#id_BossPlasma,obID(a1)
00019e30 3489	move.w	a1,(a2)
00019e32 23480034	move.l	a0,objoff_34(a1)
00019e36 45e80038	lea	objoff_38(a0),a2
00019e3a 7400	moveq	#0,d2
00019e3c 7203	moveq	#3,d1
00019e3e 4eb90000daa2	jsr	(FindNextFreeObj).l
00019e44 6614	bne.s	loc_19E5A
00019e46 34c9	move.w	a1,(a2)+
00019e48 12bc0084	move.b	#id_EggmanCylinder,obID(a1)
00019e4c 23480034	move.l	a0,objoff_34(a1)
00019e50 13420028	move.b	d2,obSubtype(a1)
00019e54 5442	addq.w	#2,d2
00019e56 51c9ffe6	dbf	d1,loc_19E3E
00019e5a 317c00000034	move.w	#0,objoff_34(a0)
00019e60 117c00080021	move.b	#8,obBossHits(a0)
00019e66 317cffff0030	move.w	#-1,objoff_30(a0)
00019e6c 7000	moveq	#0,d0
00019e6e 10280034	move.b	objoff_34(a0),d0
00019e72 303b000c	move.w	off_19E80(pc,d0.w),d0
00019e76 4ebb0008	jsr	off_19E80(pc,d0.w)
00019e7a 4ef90000d604	jmp	(DisplaySprite).l
00019e90 4ab8f680	tst.l	(v_plc_buffer).w
00019e94 660c	bne.s	loc_19EA2
00019e96 0c782450f700	cmpi.w	#boss_fz_x,(v_screenposx).w
00019e9c 6504	blo.s	loc_19EA2
00019e9e 54280034	addq.b	#2,objoff_34(a0)
00019ea2 52b8f636	addq.l	#1,(v_random).w
00019ea6 4e75	rts	
00019ea8 4a680030	tst.w	objoff_30(a0)
00019eac 6a62	bpl.s	loc_19F10
00019eae 42680030	clr.w	objoff_30(a0)
00019eb2 4eb9000029b4	jsr	(RandomNumber).l
00019eb8 0240000c	andi.w	#$C,d0
00019ebc 3200	move.w	d0,d1
00019ebe 5441	addq.w	#2,d1
00019ec0 4a80	tst.l	d0
00019ec2 6a02	bpl.s	loc_19EC6
00019ec4 c340	exg.l	d1,d0
00019ec6 43fa010e	lea	BossFinal_CylinderPairs(pc),a1
00019eca 30310000	move.w	(a1,d0.w),d0
00019ece 32311000	move.w	(a1,d1.w),d1
00019ed2 31400030	move.w	d0,objoff_30(a0)
00019ed6 74ff	moveq	#-1,d2
00019ed8 34300038	move.w	objoff_38(a0,d0.w),d2
00019edc 2242	movea.l	d2,a1
00019ede 137c00ff0029	move.b	#-1,objoff_29(a1)
00019ee4 337cffff0030	move.w	#-1,objoff_30(a1)
00019eea 34301038	move.w	objoff_38(a0,d1.w),d2
00019eee 2242	movea.l	d2,a1
00019ef0 137c00010029	move.b	#1,objoff_29(a1)
00019ef6 337c00000030	move.w	#0,objoff_30(a1)
00019efc 317c00010032	move.w	#1,objoff_32(a0)
00019f02 42280035	clr.b	objoff_35(a0)
00019f06 303c00b7	move.w	#sfx_Rumbling,d0
00019f0a 4eb90000139c	jsr	(QueueSound2).l
00019f10 4a680032	tst.w	objoff_32(a0)
00019f14 6b000090	bmi.w	loc_19FA6
00019f18 08a800000022	bclr	#0,obStatus(a0)
00019f1e 3038d008	move.w	(v_player+obX).w,d0
00019f22 90680008	sub.w	obX(a0),d0
00019f26 6506	bcs.s	loc_19F2E
00019f28 08e800000022	bset	#0,obStatus(a0)
00019f2e 323c002b	move.w	#$2B,d1
00019f32 343c0014	move.w	#$14,d2
00019f36 363c0014	move.w	#$14,d3
00019f3a 38280008	move.w	obX(a0),d4
00019f3e 4eb90000f9d6	jsr	(SolidObject).l
00019f44 4a44	tst.w	d4
00019f46 6e08	bgt.s	loc_19F50
00019f48 4a280035	tst.b	objoff_35(a0)
00019f4c 663a	bne.s	loc_19F88
00019f4e 6046	bra.s	loc_19F96
00019f50 5e78f636	addq.w	#7,(v_random).w
00019f54 0c380002d01c	cmpi.b	#id_Roll,(v_player+obAnim).w
00019f5a 66ec	bne.s	loc_19F48
00019f5c 303c0300	move.w	#$300,d0
00019f60 082800000022	btst	#0,obStatus(a0)
00019f66 6602	bne.s	loc_19F6A
00019f68 4440	neg.w	d0
00019f6a 31c0d010	move.w	d0,(v_player+obVelX).w
00019f6e 4a280035	tst.b	objoff_35(a0)
00019f72 6614	bne.s	loc_19F88
00019f74 53280021	subq.b	#1,obBossHits(a0)
00019f78 117c00640035	move.b	#$64,objoff_35(a0)
00019f7e 303c00ac	move.w	#sfx_HitBoss,d0
00019f82 4eb90000139c	jsr	(QueueSound2).l
00019f88 53280035	subq.b	#1,objoff_35(a0)
00019f8c 6708	beq.s	loc_19F96
00019f8e 117c0003001c	move.b	#3,obAnim(a0)
00019f94 6006	bra.s	loc_19F9C
00019f96 117c0001001c	move.b	#1,obAnim(a0)
00019f9c 43fafa64	lea	Ani_SEgg(pc),a1
00019fa0 4ef90000a718	jmp	(AnimateSprite).l
00019fa6 4a280021	tst.b	obBossHits(a0)
00019faa 6710	beq.s	loc_19FBC
00019fac 54280034	addq.b	#2,objoff_34(a0)
00019fb0 317cffff0030	move.w	#-1,objoff_30(a0)
00019fb6 42680032	clr.w	objoff_32(a0)
00019fba 4e75	rts	
00019fbc 117c00060034	move.b	#6,objoff_34(a0)
00019fc2 317c25c00008	move.w	#boss_fz_x+$170,obX(a0)
00019fc8 317c053c000c	move.w	#boss_fz_y+$2C,obY(a0)
00019fce 117c00140016	move.b	#$14,obHeight(a0)
00019fd4 4e75	rts	
00019fe6 70ff	moveq	#-1,d0
00019fe8 30280036	move.w	objoff_36(a0),d0
00019fec 2240	movea.l	d0,a1
00019fee 4a680030	tst.w	objoff_30(a0)
00019ff2 6a0c	bpl.s	loc_1A000
00019ff4 42680030	clr.w	objoff_30(a0)
00019ff8 137c00ff0029	move.b	#-1,objoff_29(a1)
00019ffe 6120	bsr.s	loc_1A020
0001a000 700f	moveq	#$F,d0
0001a002 c078fe0e	and.w	(v_vblank_word).w,d0
0001a006 6602	bne.s	loc_1A00A
0001a008 6116	bsr.s	loc_1A020
0001a00a 4a680032	tst.w	objoff_32(a0)
0001a00e 670e	beq.s	locret_1A01E
0001a010 55280034	subq.b	#2,objoff_34(a0)
0001a014 317cffff0030	move.w	#-1,objoff_30(a0)
0001a01a 42680032	clr.w	objoff_32(a0)
0001a01e 4e75	rts	
0001a020 303c00b1	move.w	#sfx_Electric,d0
0001a024 4ef90000139c	jmp	(QueueSound2).l
0001a02a 117c00300017	move.b	#$30,obWidth(a0)
0001a030 08e800000022	bset	#0,obStatus(a0)
0001a036 4eb90000d5de	jsr	(SpeedToPos).l
0001a03c 117c0006001a	move.b	#6,obFrame(a0)
0001a042 066800100012	addi.w	#$10,obVelY(a0)
0001a048 0c68059c000c	cmpi.w	#boss_fz_y+$8C,obY(a0)
0001a04e 6520	blo.s	loc_1A070
0001a050 317c059c000c	move.w	#boss_fz_y+$8C,obY(a0)
0001a056 54280034	addq.b	#2,objoff_34(a0)
0001a05a 117c00200017	move.b	#$20,obWidth(a0)
0001a060 317c01000010	move.w	#$100,obVelX(a0)
0001a066 317cff000012	move.w	#-$100,obVelY(a0)
0001a06c 5438f742	addq.b	#2,(v_dle_routine).w
0001a070 600000f4	bra.w	loc_1A166
0001a074 08e800000022	bset	#0,obStatus(a0)
0001a07a 117c0004001c	move.b	#4,obAnim(a0)
0001a080 4eb90000d5de	jsr	(SpeedToPos).l
0001a086 066800100012	addi.w	#$10,obVelY(a0)
0001a08c 0c6805a3000c	cmpi.w	#boss_fz_y+$93,obY(a0)
0001a092 6506	blo.s	loc_1A09A
0001a094 317cffc00012	move.w	#-$40,obVelY(a0)
0001a09a 317c04000010	move.w	#$400,obVelX(a0)
0001a0a0 30280008	move.w	obX(a0),d0
0001a0a4 9078d008	sub.w	(v_player+obX).w,d0
0001a0a8 6a0a	bpl.s	loc_1A0B4
0001a0aa 317c05000010	move.w	#$500,obVelX(a0)
0001a0b0 60000040	bra.w	loc_1A0F2
0001a0b4 04400070	subi.w	#$70,d0
0001a0b8 6538	bcs.s	loc_1A0F2
0001a0ba 046801000010	subi.w	#$100,obVelX(a0)
0001a0c0 5140	subq.w	#8,d0
0001a0c2 652e	bcs.s	loc_1A0F2
0001a0c4 046801000010	subi.w	#$100,obVelX(a0)
0001a0ca 5140	subq.w	#8,d0
0001a0cc 6524	bcs.s	loc_1A0F2
0001a0ce 046800800010	subi.w	#$80,obVelX(a0)
0001a0d4 5140	subq.w	#8,d0
0001a0d6 651a	bcs.s	loc_1A0F2
0001a0d8 046800800010	subi.w	#$80,obVelX(a0)
0001a0de 5140	subq.w	#8,d0
0001a0e0 6510	bcs.s	loc_1A0F2
0001a0e2 046800800010	subi.w	#$80,obVelX(a0)
0001a0e8 04400038	subi.w	#$38,d0
0001a0ec 6504	bcs.s	loc_1A0F2
0001a0ee 42680010	clr.w	obVelX(a0)
0001a0f2 0c6826a00008	cmpi.w	#boss_fz_x+$250,obX(a0)
0001a0f8 6516	blo.s	loc_1A110
0001a0fa 317c26a00008	move.w	#boss_fz_x+$250,obX(a0)
0001a100 317c02400010	move.w	#$240,obVelX(a0)
0001a106 317cfb400012	move.w	#-$4C0,obVelY(a0)
0001a10c 54280034	addq.b	#2,objoff_34(a0)
0001a110 604a	bra.s	loc_1A15C
0001a112 4eb90000d5de	jsr	(SpeedToPos).l
0001a118 0c6826e00008	cmpi.w	#boss_fz_x+$290,obX(a0)
0001a11e 6504	blo.s	loc_1A124
0001a120 42680010	clr.w	obVelX(a0)
0001a124 066800340012	addi.w	#$34,obVelY(a0)
0001a12a 4a680012	tst.w	obVelY(a0)
0001a12e 6b12	bmi.s	loc_1A142
0001a130 0c680592000c	cmpi.w	#boss_fz_y+$82,obY(a0)
0001a136 650a	blo.s	loc_1A142
0001a138 317c0592000c	move.w	#boss_fz_y+$82,obY(a0)
0001a13e 42680012	clr.w	obVelY(a0)
0001a142 30280010	move.w	obVelX(a0),d0
0001a146 80680012	or.w	obVelY(a0),d0
0001a14a 6610	bne.s	loc_1A15C
0001a14c 54280034	addq.b	#2,objoff_34(a0)
0001a150 317cfe800012	move.w	#-$180,obVelY(a0)
0001a156 117c00010021	move.b	#1,obBossHits(a0)
0001a15c 43faf8a4	lea	Ani_SEgg(pc),a1
0001a160 4eb90000a718	jsr	(AnimateSprite).l
0001a166 0c782700f72a	cmpi.w	#boss_fz_end,(v_limitright2).w
0001a16c 6c04	bge.s	loc_1A172
0001a16e 5478f72a	addq.w	#2,(v_limitright2).w
0001a172 0c28000c0034	cmpi.b	#$C,objoff_34(a0)
0001a178 6c16	bge.s	locret_1A190
0001a17a 323c001b	move.w	#$1B,d1
0001a17e 343c0070	move.w	#$70,d2
0001a182 363c0071	move.w	#$71,d3
0001a186 38280008	move.w	obX(a0),d4
0001a18a 4ef90000f9d6	jmp	(SolidObject).l
0001a190 4e75	rts	
0001a192 217c00017d0c0004	move.l	#Map_Eggman,obMap(a0)
0001a19a 317c04000002	move.w	#ArtTile_Eggman,obGfx(a0)
0001a1a0 117c0000001c	move.b	#0,obAnim(a0)
0001a1a6 08e800000022	bset	#0,obStatus(a0)
0001a1ac 4eb90000d5de	jsr	(SpeedToPos).l
0001a1b2 0c680544000c	cmpi.w	#boss_fz_y+$34,obY(a0)
0001a1b8 6416	bhs.s	loc_1A1D0
0001a1ba 317c01800010	move.w	#$180,obVelX(a0)
0001a1c0 317cffe80012	move.w	#-$18,obVelY(a0)
0001a1c6 117c000f0020	move.b	#$F,obColType(a0)
0001a1cc 54280034	addq.b	#2,objoff_34(a0)
0001a1d0 6000ff8a	bra.w	loc_1A15C
0001a1d4 08e800000022	bset	#0,obStatus(a0)
0001a1da 4eb90000d5de	jsr	(SpeedToPos).l
0001a1e0 4a680030	tst.w	objoff_30(a0)
0001a1e4 6616	bne.s	loc_1A1FC
0001a1e6 4a280020	tst.b	obColType(a0)
0001a1ea 662a	bne.s	loc_1A216
0001a1ec 317c001e0030	move.w	#$1E,objoff_30(a0)
0001a1f2 303c00ac	move.w	#sfx_HitBoss,d0
0001a1f6 4eb90000139c	jsr	(QueueSound2).l
0001a1fc 53680030	subq.w	#1,objoff_30(a0)
0001a200 6614	bne.s	loc_1A216
0001a202 4a280022	tst.b	obStatus(a0)
0001a206 6a08	bpl.s	loc_1A210
0001a208 317c00600012	move.w	#$60,obVelY(a0)
0001a20e 6006	bra.s	loc_1A216
0001a210 117c000f0020	move.b	#$F,obColType(a0)
0001a216 0c782790d008	cmpi.w	#boss_fz_end+$90,(v_player+obX).w
0001a21c 6d1c	blt.s	loc_1A23A
0001a21e 11fc0001f7cc	move.b	#1,(f_lockctrl).w
0001a224 31fc0000f602	move.w	#0,(v_jpadhold2).w
0001a22a 4278d014	clr.w	(v_player+obInertia).w
0001a22e 4a680012	tst.w	obVelY(a0)
0001a232 6a14	bpl.s	loc_1A248
0001a234 31fc0100f602	move.w	#btnUp<<8,(v_jpadhold2).w
0001a23a 0c7827e0d008	cmpi.w	#boss_fz_end+$E0,(v_player+obX).w
0001a240 6d06	blt.s	loc_1A248
0001a242 31fc27e0d008	move.w	#boss_fz_end+$E0,(v_player+obX).w
0001a248 0c6829000008	cmpi.w	#boss_fz_end+$200,obX(a0)
0001a24e 6510	blo.s	loc_1A260
0001a250 4a280001	tst.b	obRender(a0)
0001a254 6b0a	bmi.s	loc_1A260
0001a256 11fc0018f600	move.b	#id_Ending,(v_gamemode).w
0001a25c 6000faf4	bra.w	BossFinal_Delete
0001a260 6000fefa	bra.w	loc_1A15C
0001a264 22680034	movea.l	objoff_34(a0),a1
0001a268 1011	move.b	(a1),d0
0001a26a b010	cmp.b	(a0),d0
0001a26c 6600fae4	bne.w	BossFinal_Delete
0001a270 117c0007001c	move.b	#7,obAnim(a0)
0001a276 0c29000c0034	cmpi.b	#$C,objoff_34(a1)
0001a27c 6c02	bge.s	loc_1A280
0001a27e 6026	bra.s	loc_1A2A6
0001a280 4a690010	tst.w	obVelX(a1)
0001a284 6706	beq.s	loc_1A28C
0001a286 117c000b001c	move.b	#$B,obAnim(a0)
0001a28c 43fada2e	lea	Ani_Eggman(pc),a1
0001a290 4eb90000a718	jsr	(AnimateSprite).l
0001a296 22680034	movea.l	objoff_34(a0),a1
0001a29a 316900080008	move.w	obX(a1),obX(a0)
0001a2a0 3169000c000c	move.w	obY(a1),obY(a0)
0001a2a6 22680034	movea.l	objoff_34(a0),a1
0001a2aa 116900220022	move.b	obStatus(a1),obStatus(a0)
0001a2b0 7003	moveq	#3,d0
0001a2b2 c0280022	and.b	obStatus(a0),d0
0001a2b6 022800fc0001	andi.b	#$FC,obRender(a0)
0001a2bc 81280001	or.b	d0,obRender(a0)
0001a2c0 4ef90000d604	jmp	(DisplaySprite).l
0001a2c6 22680034	movea.l	objoff_34(a0),a1
0001a2ca 1011	move.b	(a1),d0
0001a2cc b010	cmp.b	(a0),d0
0001a2ce 6600fa82	bne.w	BossFinal_Delete
0001a2d2 0ca900017d0c0004	cmpi.l	#Map_Eggman,obMap(a1)
0001a2da 6708	beq.s	loc_1A2E4
0001a2dc 117c000a001a	move.b	#$A,obFrame(a0)
0001a2e2 60c2	bra.s	loc_1A2A6
0001a2e4 117c0001001c	move.b	#1,obAnim(a0)
0001a2ea 4a290021	tst.b	obBossHits(a1)
0001a2ee 6f22	ble.s	loc_1A312
0001a2f0 117c0006001c	move.b	#6,obAnim(a0)
0001a2f6 217c00017d0c0004	move.l	#Map_Eggman,obMap(a0)
0001a2fe 317c04000002	move.w	#ArtTile_Eggman,obGfx(a0)
0001a304 43fad9b6	lea	Ani_Eggman(pc),a1
0001a308 4eb90000a718	jsr	(AnimateSprite).l
0001a30e 6000ff86	bra.w	loc_1A296
0001a312 4a280001	tst.b	obRender(a0)
0001a316 6a00fa3a	bpl.w	BossFinal_Delete
0001a31a 6100d544	bsr.w	BossDefeated
0001a31e 117c00020018	move.b	#2,obPriority(a0)
0001a324 117c0000001c	move.b	#0,obAnim(a0)
0001a32a 217c0001a3da0004	move.l	#Map_FZDamaged,obMap(a0)
0001a332 317c03a00002	move.w	#ArtTile_FZ_Eggman_Fleeing,obGfx(a0)
0001a338 43fa009a	lea	Ani_FZEgg(pc),a1
0001a33c 4eb90000a718	jsr	(AnimateSprite).l
0001a342 6000ff52	bra.w	loc_1A296
0001a346 08e800000022	bset	#0,obStatus(a0)
0001a34c 22680034	movea.l	objoff_34(a0),a1
0001a350 0ca900017d0c0004	cmpi.l	#Map_Eggman,obMap(a1)
0001a358 6704	beq.s	loc_1A35E
0001a35a 6000ff4a	bra.w	loc_1A2A6
0001a35e 316900080008	move.w	obX(a1),obX(a0)
0001a364 3169000c000c	move.w	obY(a1),obY(a0)
0001a36a 4a28001e	tst.b	obTimeFrame(a0)
0001a36e 6606	bne.s	loc_1A376
0001a370 117c0014001e	move.b	#$14,obTimeFrame(a0)
0001a376 5328001e	subq.b	#1,obTimeFrame(a0)
0001a37a 6e0e	bgt.s	loc_1A38A
0001a37c 5228001a	addq.b	#1,obFrame(a0)
0001a380 0c280002001a	cmpi.b	#2,obFrame(a0)
0001a386 6e00f9ca	bgt.w	BossFinal_Delete
0001a38a 6000ff0a	bra.w	loc_1A296
0001a38e 117c000b001a	move.b	#$B,obFrame(a0)
0001a394 3038d008	move.w	(v_player+obX).w,d0
0001a398 90680008	sub.w	obX(a0),d0
0001a39c 6508	bcs.s	loc_1A3A6
0001a39e 4a280001	tst.b	obRender(a0)
0001a3a2 6a00f9ae	bpl.w	BossFinal_Delete
0001a3a6 4ef90000d604	jmp	(DisplaySprite).l
0001a3ac 117c0000001a	move.b	#0,obFrame(a0)
0001a3b2 08e800000022	bset	#0,obStatus(a0)
0001a3b8 22680034	movea.l	objoff_34(a0),a1
0001a3bc 0c29000c0034	cmpi.b	#$C,objoff_34(a1)
0001a3c2 660c	bne.s	loc_1A3D0
0001a3c4 0ca900017d0c0004	cmpi.l	#Map_Eggman,obMap(a1)
0001a3cc 6700f984	beq.w	BossFinal_Delete
0001a3d0 6000fed4	bra.w	loc_1A2A6
0001a448 4ef90000d640	jmp	(DeleteObject).l
0001a44e 7000	moveq	#0,d0
0001a450 10280024	move.b	obRoutine(a0),d0
0001a454 303b0006	move.w	EggmanCylinder_Index(pc,d0.w),d0
0001a458 4efb0002	jmp	EggmanCylinder_Index(pc,d0.w)
0001a472 43faffee	lea	EggmanCylinder_PosData(pc),a1
0001a476 7000	moveq	#0,d0
0001a478 10280028	move.b	obSubtype(a0),d0
0001a47c d040	add.w	d0,d0
0001a47e d2c0	adda.w	d0,a1
0001a480 117c00040001	move.b	#4,obRender(a0)
0001a486 08e800070001	bset	#7,obRender(a0)
0001a48c 08e800040001	bset	#4,obRender(a0)
0001a492 317c03000002	move.w	#ArtTile_FZ_Boss,obGfx(a0)
0001a498 217c0001a6760004	move.l	#Map_EggCyl,obMap(a0)
0001a4a0 31590008	move.w	(a1)+,obX(a0)
0001a4a4 3151000c	move.w	(a1),obY(a0)
0001a4a8 31590038	move.w	(a1)+,obBossY(a0)
0001a4ac 117c00200016	move.b	#$20,obHeight(a0)
0001a4b2 117c00600017	move.b	#$60,obWidth(a0)
0001a4b8 117c00200019	move.b	#$20,obActWid(a0)
0001a4be 117c00600016	move.b	#$60,obHeight(a0)
0001a4c4 117c00030018	move.b	#3,obPriority(a0)
0001a4ca 54280024	addq.b	#2,obRoutine(a0)
0001a4ce 0c2800020028	cmpi.b	#2,obSubtype(a0)
0001a4d4 6f06	ble.s	loc_1A4DC
0001a4d6 08e800010001	bset	#1,obRender(a0)
0001a4dc 42a8003c	clr.l	objoff_3C(a0)
0001a4e0 4a280029	tst.b	objoff_29(a0)
0001a4e4 6704	beq.s	loc_1A4EA
0001a4e6 54280024	addq.b	#2,obRoutine(a0)
0001a4ea 2028003c	move.l	objoff_3C(a0),d0
0001a4ee 22280038	move.l	obBossY(a0),d1
0001a4f2 d280	add.l	d0,d1
0001a4f4 4841	swap	d1
0001a4f6 3141000c	move.w	d1,obY(a0)
0001a4fa 0c2800040024	cmpi.b	#4,obRoutine(a0)
0001a500 6622	bne.s	loc_1A524
0001a502 4a680030	tst.w	objoff_30(a0)
0001a506 6a1c	bpl.s	loc_1A524
0001a508 70f6	moveq	#-$A,d0
0001a50a 0c2800020028	cmpi.b	#2,obSubtype(a0)
0001a510 6f02	ble.s	loc_1A514
0001a512 700e	moveq	#$E,d0
0001a514 d240	add.w	d0,d1
0001a516 22680034	movea.l	objoff_34(a0),a1
0001a51a 3341000c	move.w	d1,obY(a1)
0001a51e 336800080008	move.w	obX(a0),obX(a1)
0001a524 323c002b	move.w	#$2B,d1
0001a528 343c0060	move.w	#$60,d2
0001a52c 363c0061	move.w	#$61,d3
0001a530 38280008	move.w	obX(a0),d4
0001a534 4eb90000f9d6	jsr	(SolidObject).l
0001a53a 7000	moveq	#0,d0
0001a53c 3228003c	move.w	objoff_3C(a0),d1
0001a540 6a0e	bpl.s	loc_1A550
0001a542 4441	neg.w	d1
0001a544 5141	subq.w	#8,d1
0001a546 6514	bcs.s	loc_1A55C
0001a548 5200	addq.b	#1,d0
0001a54a e841	asr.w	#4,d1
0001a54c d041	add.w	d1,d0
0001a54e 600c	bra.s	loc_1A55C
0001a550 04410027	subi.w	#$27,d1
0001a554 6506	bcs.s	loc_1A55C
0001a556 5200	addq.b	#1,d0
0001a558 e841	asr.w	#4,d1
0001a55a d041	add.w	d1,d0
0001a55c 1140001a	move.b	d0,obFrame(a0)
0001a560 3038d008	move.w	(v_player+obX).w,d0
0001a564 90680008	sub.w	obX(a0),d0
0001a568 6b0e	bmi.s	loc_1A578
0001a56a 04400140	subi.w	#$140,d0
0001a56e 6b08	bmi.s	loc_1A578
0001a570 4a280001	tst.b	obRender(a0)
0001a574 6a00fed2	bpl.w	EggmanCylinder_Delete
0001a578 4ef90000d604	jmp	(DisplaySprite).l
0001a57e 7000	moveq	#0,d0
0001a580 10280028	move.b	obSubtype(a0),d0
0001a584 303b000a	move.w	off_1A590(pc,d0.w),d0
0001a588 4ebb0006	jsr	off_1A590(pc,d0.w)
0001a58c 6000ff5c	bra.w	loc_1A4EA
0001a598 4a280029	tst.b	objoff_29(a0)
0001a59c 6636	bne.s	loc_1A5D4
0001a59e 22680034	movea.l	objoff_34(a0),a1
0001a5a2 4a290021	tst.b	obBossHits(a1)
0001a5a6 660c	bne.s	loc_1A5B4
0001a5a8 6100d2b6	bsr.w	BossDefeated
0001a5ac 04a800010000003c	subi.l	#$10000,objoff_3C(a0)
0001a5b4 06a800020000003c	addi.l	#$20000,objoff_3C(a0)
0001a5bc 6444	bcc.s	locret_1A602
0001a5be 42a8003c	clr.l	objoff_3C(a0)
0001a5c2 22680034	movea.l	objoff_34(a0),a1
0001a5c6 53690032	subq.w	#1,objoff_32(a1)
0001a5ca 42690030	clr.w	objoff_30(a1)
0001a5ce 55280024	subq.b	#2,obRoutine(a0)
0001a5d2 4e75	rts	
0001a5d4 0c68fff0003c	cmpi.w	#-$10,objoff_3C(a0)
0001a5da 6c08	bge.s	loc_1A5E4
0001a5dc 04a800028000003c	subi.l	#$28000,objoff_3C(a0)
0001a5e4 04a800008000003c	subi.l	#$8000,objoff_3C(a0)
0001a5ec 0c68ff60003c	cmpi.w	#-$A0,objoff_3C(a0)
0001a5f2 6e0e	bgt.s	locret_1A602
0001a5f4 4268003e	clr.w	objoff_3E(a0)
0001a5f8 317cff60003c	move.w	#-$A0,objoff_3C(a0)
0001a5fe 42280029	clr.b	objoff_29(a0)
0001a602 4e75	rts	
0001a604 08e800010001	bset	#1,obRender(a0)
0001a60a 4a280029	tst.b	objoff_29(a0)
0001a60e 6636	bne.s	loc_1A646
0001a610 22680034	movea.l	objoff_34(a0),a1
0001a614 4a290021	tst.b	obBossHits(a1)
0001a618 660c	bne.s	loc_1A626
0001a61a 6100d244	bsr.w	BossDefeated
0001a61e 06a800010000003c	addi.l	#$10000,objoff_3C(a0)
0001a626 04a800020000003c	subi.l	#$20000,objoff_3C(a0)
0001a62e 6444	bcc.s	locret_1A674
0001a630 42a8003c	clr.l	objoff_3C(a0)
0001a634 22680034	movea.l	objoff_34(a0),a1
0001a638 53690032	subq.w	#1,objoff_32(a1)
0001a63c 42690030	clr.w	objoff_30(a1)
0001a640 55280024	subq.b	#2,obRoutine(a0)
0001a644 4e75	rts	
0001a646 0c680010003c	cmpi.w	#$10,objoff_3C(a0)
0001a64c 6d08	blt.s	loc_1A656
0001a64e 06a800028000003c	addi.l	#$28000,objoff_3C(a0)
0001a656 06a800008000003c	addi.l	#$8000,objoff_3C(a0)
0001a65e 0c6800a0003c	cmpi.w	#$A0,objoff_3C(a0)
0001a664 6d0e	blt.s	locret_1A674
0001a666 4268003e	clr.w	objoff_3E(a0)
0001a66a 317c00a0003c	move.w	#$A0,objoff_3C(a0)
0001a670 42280029	clr.b	objoff_29(a0)
0001a674 4e75	rts	
0001a7da 7000	moveq	#0,d0
0001a7dc 10280024	move.b	obRoutine(a0),d0
0001a7e0 303b0006	move.w	BossPlasma_Index(pc,d0.w),d0
0001a7e4 4efb0002	jmp	BossPlasma_Index(pc,d0.w)
0001a7f2 317c25880008	move.w	#boss_fz_x+$138,obX(a0)
0001a7f8 317c053c000c	move.w	#boss_fz_y+$2C,obY(a0)
0001a7fe 317c03000002	move.w	#ArtTile_FZ_Boss,obGfx(a0)
0001a804 217c0001aa560004	move.l	#Map_PLaunch,obMap(a0)
0001a80c 117c0000001c	move.b	#0,obAnim(a0)
0001a812 117c00030018	move.b	#3,obPriority(a0)
0001a818 117c00080017	move.b	#8,obWidth(a0)
0001a81e 117c00080016	move.b	#8,obHeight(a0)
0001a824 117c00040001	move.b	#4,obRender(a0)
0001a82a 08e800070001	bset	#7,obRender(a0)
0001a830 54280024	addq.b	#2,obRoutine(a0)
0001a834 22680034	movea.l	objoff_34(a0),a1
0001a838 0c2900060034	cmpi.b	#6,objoff_34(a1)
0001a83e 6610	bne.s	loc_1A850
0001a840 10bc003f	move.b	#id_Explosion,obID(a0)
0001a844 117c00000024	move.b	#0,obRoutine(a0)
0001a84a 4ef90000d604	jmp	(DisplaySprite).l
0001a850 117c0000001c	move.b	#0,obAnim(a0)
0001a856 4a280029	tst.b	objoff_29(a0)
0001a85a 6710	beq.s	loc_1A86C
0001a85c 54280024	addq.b	#2,obRoutine(a0)
0001a860 117c0001001c	move.b	#1,obAnim(a0)
0001a866 117c003e0028	move.b	#$3E,obSubtype(a0)
0001a86c 323c0013	move.w	#$13,d1
0001a870 343c0008	move.w	#8,d2
0001a874 363c0011	move.w	#$11,d3
0001a878 38280008	move.w	obX(a0),d4
0001a87c 4eb90000f9d6	jsr	(SolidObject).l
0001a882 3038d008	move.w	(v_player+obX).w,d0
0001a886 90680008	sub.w	obX(a0),d0
0001a88a 6b0e	bmi.s	loc_1A89A
0001a88c 04400140	subi.w	#$140,d0
0001a890 6b08	bmi.s	loc_1A89A
0001a892 4a280001	tst.b	obRender(a0)
0001a896 6a00fbb0	bpl.w	EggmanCylinder_Delete
0001a89a 43fa01a4	lea	Ani_PLaunch(pc),a1
0001a89e 4eb90000a718	jsr	(AnimateSprite).l
0001a8a4 4ef90000d604	jmp	(DisplaySprite).l
0001a8aa 4a280029	tst.b	objoff_29(a0)
0001a8ae 670000a4	beq.w	loc_1A954
0001a8b2 42280029	clr.b	objoff_29(a0)
0001a8b6 d0680030	add.w	objoff_30(a0),d0
0001a8ba 0240001e	andi.w	#$1E,d0
0001a8be d4c0	adda.w	d0,a2
0001a8c0 58680030	addq.w	#4,objoff_30(a0)
0001a8c4 42680032	clr.w	objoff_32(a0)
0001a8c8 7403	moveq	#3,d2
0001a8ca 4eb90000daa2	jsr	(FindNextFreeObj).l
0001a8d0 66000082	bne.w	loc_1A954
0001a8d4 12bc0086	move.b	#id_BossPlasma,obID(a1)
0001a8d8 336800080008	move.w	obX(a0),obX(a1)
0001a8de 337c053c000c	move.w	#boss_fz_y+$2C,obY(a1)
0001a8e4 137c00080024	move.b	#8,obRoutine(a1)
0001a8ea 337c23000002	move.w	#ArtTile_FZ_Boss|Tile_Pal2,obGfx(a1)
0001a8f0 237c0001aaa60004	move.l	#Map_Plasma,obMap(a1)
0001a8f8 137c000c0016	move.b	#$C,obHeight(a1)
0001a8fe 137c000c0017	move.b	#$C,obWidth(a1)
0001a904 137c00000020	move.b	#0,obColType(a1)
0001a90a 137c00030018	move.b	#3,obPriority(a1)
0001a910 337c003e0028	move.w	#$3E,obSubtype(a1)
0001a916 137c00040001	move.b	#4,obRender(a1)
0001a91c 08e900070001	bset	#7,obRender(a1)
0001a922 23480034	move.l	a0,objoff_34(a1)
0001a926 4eb9000029b4	jsr	(RandomNumber).l
0001a92c 32280032	move.w	objoff_32(a0),d1
0001a930 c3fcffb1	muls.w	#-$4F,d1
0001a934 06412578	addi.w	#boss_fz_x+$128,d1
0001a938 0240001f	andi.w	#$1F,d0
0001a93c 04400010	subi.w	#$10,d0
0001a940 d041	add.w	d1,d0
0001a942 33400030	move.w	d0,objoff_30(a1)
0001a946 52680032	addq.w	#1,objoff_32(a0)
0001a94a 316800320038	move.w	objoff_32(a0),objoff_38(a0)
0001a950 51caff78	dbf	d2,BossPlasma_Loop
0001a954 4a680032	tst.w	objoff_32(a0)
0001a958 6604	bne.s	loc_1A95E
0001a95a 54280024	addq.b	#2,obRoutine(a0)
0001a95e 6000ff0c	bra.w	loc_1A86C
0001a962 117c0002001c	move.b	#2,obAnim(a0)
0001a968 4a680038	tst.w	objoff_38(a0)
0001a96c 6610	bne.s	loc_1A97E
0001a96e 117c00020024	move.b	#2,obRoutine(a0)
0001a974 22680034	movea.l	objoff_34(a0),a1
0001a978 337cffff0032	move.w	#-1,objoff_32(a1)
0001a97e 6000feec	bra.w	loc_1A86C
0001a982 7000	moveq	#0,d0
0001a984 10280025	move.b	ob2ndRout(a0),d0
0001a988 303b0016	move.w	BossPlasma_Index2(pc,d0.w),d0
0001a98c 4ebb0012	jsr	BossPlasma_Index2(pc,d0.w)
0001a990 43fa00e4	lea	Ani_Plasma(pc),a1
0001a994 4eb90000a718	jsr	(AnimateSprite).l
0001a99a 4ef90000d604	jmp	(DisplaySprite).l
0001a9a6 30280030	move.w	objoff_30(a0),d0
0001a9aa 90680008	sub.w	obX(a0),d0
0001a9ae e940	asl.w	#4,d0
0001a9b0 31400010	move.w	d0,obVelX(a0)
0001a9b4 317c00b40028	move.w	#$B4,obSubtype(a0)
0001a9ba 54280025	addq.b	#2,ob2ndRout(a0)
0001a9be 4e75	rts	
0001a9c0 4a680010	tst.w	obVelX(a0)
0001a9c4 6720	beq.s	loc_1A9E6
0001a9c6 4eb90000d5de	jsr	(SpeedToPos).l
0001a9cc 30280008	move.w	obX(a0),d0
0001a9d0 90680030	sub.w	objoff_30(a0),d0
0001a9d4 6410	bcc.s	loc_1A9E6
0001a9d6 42680010	clr.w	obVelX(a0)
0001a9da d1680008	add.w	d0,obX(a0)
0001a9de 22680034	movea.l	objoff_34(a0),a1
0001a9e2 53690032	subq.w	#1,objoff_32(a1)
0001a9e6 117c0000001c	move.b	#0,obAnim(a0)
0001a9ec 53680028	subq.w	#1,obSubtype(a0)
0001a9f0 662a	bne.s	locret_1AA1C
0001a9f2 54280025	addq.b	#2,ob2ndRout(a0)
0001a9f6 117c0001001c	move.b	#1,obAnim(a0)
0001a9fc 117c009a0020	move.b	#$9A,obColType(a0)
0001aa02 317c00b40028	move.w	#$B4,obSubtype(a0)
0001aa08 7000	moveq	#0,d0
0001aa0a 3038d008	move.w	(v_player+obX).w,d0
0001aa0e 90680008	sub.w	obX(a0),d0
0001aa12 31400010	move.w	d0,obVelX(a0)
0001aa16 317c01400012	move.w	#$140,obVelY(a0)
0001aa1c 4e75	rts	
0001aa1e 4eb90000d5de	jsr	(SpeedToPos).l
0001aa24 0c6805e0000c	cmpi.w	#boss_fz_y+$D0,obY(a0)
0001aa2a 6408	bhs.s	loc_1AA34
0001aa2c 53680028	subq.w	#1,obSubtype(a0)
0001aa30 6702	beq.s	loc_1AA34
0001aa32 4e75	rts	
0001aa34 22680034	movea.l	objoff_34(a0),a1
0001aa38 53690038	subq.w	#1,objoff_38(a1)
0001aa3c 6000fa0a	bra.w	EggmanCylinder_Delete
0001ab22 7000	moveq	#0,d0
0001ab24 10280024	move.b	obRoutine(a0),d0
0001ab28 323b002e	move.w	Pri_Index(pc,d0.w),d1
0001ab2c 4ebb102a	jsr	Pri_Index(pc,d1.w)
0001ab30 30280008	move.w	obX(a0),d0
0001ab34 0240ff80	andi.w	#$FF80,d0
0001ab38 3238f700	move.w	(v_screenposx).w,d1
0001ab3c 04410080	subi.w	#128,d1
0001ab40 0241ff80	andi.w	#$FF80,d1
0001ab44 9041	sub.w	d1,d0
0001ab46 0c400280	cmpi.w	#128+320+192,d0
0001ab4a 6206	bhi.s	.delete
0001ab4c 4ef90000d604	jmp	(DisplaySprite).l
0001ab52 4ef90000d640	jmp	(DeleteObject).l
0001ab78 217c0001ad740004	move.l	#Map_Pri,obMap(a0)
0001ab80 317c049d0002	move.w	#ArtTile_Prison_Capsule,obGfx(a0)
0001ab86 117c00040001	move.b	#4,obRender(a0)
0001ab8c 3168000c0030	move.w	obY(a0),pri_origY(a0)
0001ab92 7000	moveq	#0,d0
0001ab94 10280028	move.b	obSubtype(a0),d0
0001ab98 e548	lsl.w	#2,d0
0001ab9a 43fb00cc	lea	Pri_Var(pc,d0.w),a1
0001ab9e 11590024	move.b	(a1)+,obRoutine(a0)
0001aba2 11590019	move.b	(a1)+,obActWid(a0)
0001aba6 11590018	move.b	(a1)+,obPriority(a0)
0001abaa 1159001a	move.b	(a1)+,obFrame(a0)
0001abae 0c400008	cmpi.w	#8,d0
0001abb2 660c	bne.s	.not02
0001abb4 117c00060020	move.b	#6,obColType(a0)
0001abba 117c00080021	move.b	#8,obColProp(a0)
0001abc0 4e75	rts	
0001abc2 0c380002f7a7	cmpi.b	#2,(v_bossstatus).w
0001abc8 6716	beq.s	.chkopened
0001abca 323c002b	move.w	#$2B,d1
0001abce 343c0018	move.w	#$18,d2
0001abd2 363c0018	move.w	#$18,d3
0001abd6 38280008	move.w	obX(a0),d4
0001abda 4ef90000f9d6	jmp	(SolidObject).l
0001abe0 4a280025	tst.b	ob2ndRout(a0)
0001abe4 6710	beq.s	.open
0001abe6 42280025	clr.b	ob2ndRout(a0)
0001abea 08b80003d022	bclr	#3,(v_player+obStatus).w
0001abf0 08f80001d022	bset	#1,(v_player+obStatus).w
0001abf6 117c0002001a	move.b	#2,obFrame(a0)
0001abfc 4e75	rts	
0001abfe 323c0017	move.w	#$17,d1
0001ac02 343c0008	move.w	#8,d2
0001ac06 363c0008	move.w	#8,d3
0001ac0a 38280008	move.w	obX(a0),d4
0001ac0e 4eb90000f9d6	jsr	(SolidObject).l
0001ac14 43f90001ad6c	lea	(Ani_Pri).l,a1
0001ac1a 4eb90000a718	jsr	(AnimateSprite).l
0001ac20 31680030000c	move.w	pri_origY(a0),obY(a0)
0001ac26 4a280025	tst.b	ob2ndRout(a0)
0001ac2a 6734	beq.s	.open2
0001ac2c 5068000c	addq.w	#8,obY(a0)
0001ac30 117c000a0024	move.b	#$A,obRoutine(a0)
0001ac36 317c003c001e	move.w	#60,obTimeFrame(a0)
0001ac3c 4238fe1e	clr.b	(f_timecount).w
0001ac40 4238f7aa	clr.b	(f_lockscreen).w
0001ac44 11fc0001f7cc	move.b	#1,(f_lockctrl).w
0001ac4a 31fc0800f602	move.w	#(btnR<<8),(v_jpadhold2).w
0001ac50 42280025	clr.b	ob2ndRout(a0)
0001ac54 08b80003d022	bclr	#3,(v_player+obStatus).w
0001ac5a 08f80001d022	bset	#1,(v_player+obStatus).w
0001ac60 4e75	rts	
0001ac62 7007	moveq	#7,d0
0001ac64 c038fe0f	and.b	(v_vblank_byte).w,d0
0001ac68 6636	bne.s	.noexplosion
0001ac6a 4eb90000da8c	jsr	(FindFreeObj).l
0001ac70 662e	bne.s	.noexplosion
0001ac78 336800080008	move.w	obX(a0),obX(a1)
0001ac7e 3368000c000c	move.w	obY(a0),obY(a1)
0001ac84 4eb9000029b4	jsr	(RandomNumber).l
0001ac8a 7200	moveq	#0,d1
0001ac8c 1200	move.b	d0,d1
0001ac8e e409	lsr.b	#2,d1
0001ac90 04410020	subi.w	#$20,d1
0001ac94 d3690008	add.w	d1,obX(a1)
0001ac98 e048	lsr.w	#8,d0
0001ac9a e608	lsr.b	#3,d0
0001ac9c d169000c	add.w	d0,obY(a1)
0001aca0 5368001e	subq.w	#1,obTimeFrame(a0)
0001aca4 6702	beq.s	.makeanimal
0001aca6 4e75	rts	
0001aca8 11fc0002f7a7	move.b	#2,(v_bossstatus).w
0001acae 117c000c0024	move.b	#$C,obRoutine(a0)
0001acb4 117c0006001a	move.b	#6,obFrame(a0)
0001acba 317c0096001e	move.w	#150,obTimeFrame(a0)
0001acc0 06680020000c	addi.w	#$20,obY(a0)
0001acc6 7c07	moveq	#7,d6
0001acc8 3a3c009a	move.w	#$9A,d5
0001accc 78e4	moveq	#-$1C,d4
0001acce 4eb90000da8c	jsr	(FindFreeObj).l
0001acd4 6622	bne.s	.fail
0001acdc 336800080008	move.w	obX(a0),obX(a1)
0001ace2 3368000c000c	move.w	obY(a0),obY(a1)
0001ace8 d9690008	add.w	d4,obX(a1)
0001acec 5e44	addq.w	#7,d4
0001acee 33450036	move.w	d5,objoff_36(a1)
0001acf2 5145	subq.w	#8,d5
0001acf4 51ceffd8	dbf	d6,.loop
0001acf8 4e75	rts	
0001acfa 7007	moveq	#7,d0
0001acfc c038fe0f	and.b	(v_vblank_byte).w,d0
0001ad00 6636	bne.s	.noanimal
0001ad02 4eb90000da8c	jsr	(FindFreeObj).l
0001ad08 662e	bne.s	.noanimal
0001ad10 336800080008	move.w	obX(a0),obX(a1)
0001ad16 3368000c000c	move.w	obY(a0),obY(a1)
0001ad1c 4eb9000029b4	jsr	(RandomNumber).l
0001ad22 0240001f	andi.w	#$1F,d0
0001ad26 5d40	subq.w	#6,d0
0001ad28 4a41	tst.w	d1
0001ad2a 6a02	bpl.s	.ispositive
0001ad2c 4440	neg.w	d0
0001ad2e d1690008	add.w	d0,obX(a1)
0001ad32 337c000c0036	move.w	#$C,objoff_36(a1)
0001ad38 5368001e	subq.w	#1,obTimeFrame(a0)
0001ad3c 660a	bne.s	.wait
0001ad3e 54280024	addq.b	#2,obRoutine(a0)
0001ad42 317c00b4001e	move.w	#180,obTimeFrame(a0)
0001ad48 4e75	rts	
0001ad4a 703e	moveq	#(v_objspace_end-(v_objspace+object_size*1))/object_size/2-1,d0
0001ad4c 7228	moveq	#id_Animals,d1
0001ad4e 7440	moveq	#object_size,d2
0001ad50 43f8d040	lea	(v_objspace+object_size*1).w,a1
0001ad54 b211	cmp.b	obID(a1),d1
0001ad56 6712	beq.s	.found
0001ad58 d2c2	adda.w	d2,a1
0001ad5a 51c8fff8	dbf	d0,.findanimal
0001ad5e 4eb90000ec8a	jsr	(GotThroughAct).l
0001ad64 4ef90000d640	jmp	(DeleteObject).l
0001ad6a 4e75	rts	
0001ade4 4e71	nop	
0001ade6 34280008	move.w	obX(a0),d2
0001adea 3628000c	move.w	obY(a0),d3
0001adee 5142	subq.w	#8,d2
0001adf0 7a00	moveq	#0,d5
0001adf2 1a280016	move.b	obHeight(a0),d5
0001adf6 5705	subq.b	#3,d5
0001adf8 9645	sub.w	d5,d3
0001adfa 0c280039001a	cmpi.b	#fr_Duck,obFrame(a0)
0001ae00 6606	bne.s	.notducking
0001ae02 0643000c	addi.w	#$C,d3
0001ae06 7a0a	moveq	#$A,d5
0001ae08 383c0010	move.w	#$10,d4
0001ae0c da45	add.w	d5,d5
0001ae0e 43f8d800	lea	(v_lvlobjspace).w,a1
0001ae12 3c3c005f	move.w	#(v_lvlobjend-v_lvlobjspace)/$40-1,d6
0001ae16 4a290001	tst.b	obRender(a1)
0001ae1a 6a06	bpl.s	.next
0001ae1c 10290020	move.b	obColType(a1),d0
0001ae20 6654	bne.s	.proximity
0001ae22 43e90040	lea	object_size(a1),a1
0001ae26 51ceffee	dbf	d6,.loop
0001ae2a 7000	moveq	#0,d0
0001ae2c 4e75	rts	
0001ae76 0240003f	andi.w	#$3F,d0
0001ae7a d040	add.w	d0,d0
0001ae7c 45fb00ae	lea	.sizes-2(pc,d0.w),a2
0001ae80 7200	moveq	#0,d1
0001ae82 121a	move.b	(a2)+,d1
0001ae84 30290008	move.w	obX(a1),d0
0001ae88 9041	sub.w	d1,d0
0001ae8a 9042	sub.w	d2,d0
0001ae8c 640a	bcc.s	.outsidex
0001ae8e d241	add.w	d1,d1
0001ae90 d041	add.w	d1,d0
0001ae92 650a	bcs.s	.withinx
0001ae94 6000ff8c	bra.w	.next
0001ae98 b044	cmp.w	d4,d0
0001ae9a 6200ff86	bhi.w	.next
0001ae9e 7200	moveq	#0,d1
0001aea0 121a	move.b	(a2)+,d1
0001aea2 3029000c	move.w	obY(a1),d0
0001aea6 9041	sub.w	d1,d0
0001aea8 9043	sub.w	d3,d0
0001aeaa 640a	bcc.s	.outsidey
0001aeac d241	add.w	d1,d1
0001aeae d240	add.w	d0,d1
0001aeb0 650a	bcs.s	.withiny
0001aeb2 6000ff6e	bra.w	.next
0001aeb6 b045	cmp.w	d5,d0
0001aeb8 6200ff68	bhi.w	.next
0001aebc 12290020	move.b	obColType(a1),d1
0001aec0 020100c0	andi.b	#$C0,d1
0001aec4 6700006a	beq.w	React_Enemy
0001aec8 0c0100c0	cmpi.b	#$C0,d1
0001aecc 67000222	beq.w	React_Special
0001aed0 4a01	tst.b	d1
0001aed2 6b00010c	bmi.w	React_ChkHurt
0001aed6 10290020	move.b	obColType(a1),d0
0001aeda 0200003f	andi.b	#$3F,d0
0001aede 0c000006	cmpi.b	#6,d0
0001aee2 6710	beq.s	React_Monitor
0001aee4 0c68005a0030	cmpi.w	#90,flashtime(a0)
0001aeea 64000006	bhs.w	.preventRingCollect
0001aeee 54290024	addq.b	#2,obRoutine(a1)
0001aef2 4e75	rts	
0001aef4 4a680012	tst.w	obVelY(a0)
0001aef8 6a24	bpl.s	.movingdown
0001aefa 3028000c	move.w	obY(a0),d0
0001aefe 04400010	subi.w	#$10,d0
0001af02 b069000c	cmp.w	obY(a1),d0
0001af06 6526	blo.s	.donothing
0001af08 44680012	neg.w	obVelY(a0)
0001af0c 337cfe800012	move.w	#-$180,obVelY(a1)
0001af12 4a290025	tst.b	ob2ndRout(a1)
0001af16 6616	bne.s	.donothing
0001af18 58290025	addq.b	#4,ob2ndRout(a1)
0001af1c 4e75	rts	
0001af1e 0c280002001c	cmpi.b	#id_Roll,obAnim(a0)
0001af24 6608	bne.s	.donothing
0001af26 44680012	neg.w	obVelY(a0)
0001af2a 54290024	addq.b	#2,obRoutine(a1)
0001af2e 4e75	rts	
0001af30 4a38fe2d	tst.b	(v_invinc).w
0001af34 660a	bne.s	.donthurtsonic
0001af36 0c280002001c	cmpi.b	#id_Roll,obAnim(a0)
0001af3c 660000a2	bne.w	React_ChkHurt
0001af40 4a290021	tst.b	obColProp(a1)
0001af44 6724	beq.s	.breakenemy
0001af46 44680010	neg.w	obVelX(a0)
0001af4a 44680012	neg.w	obVelY(a0)
0001af4e e0e80010	asr.w	obVelX(a0)
0001af52 e0e80012	asr.w	obVelY(a0)
0001af56 137c00000020	move.b	#0,obColType(a1)
0001af5c 53290021	subq.b	#1,obColProp(a1)
0001af60 6606	bne.s	.flagnotclear
0001af62 08e900070022	bset	#7,obStatus(a1)
0001af68 4e75	rts	
0001af6a 08e900070022	bset	#7,obStatus(a1)
0001af70 7000	moveq	#0,d0
0001af72 3038f7d0	move.w	(v_itembonus).w,d0
0001af76 5478f7d0	addq.w	#2,(v_itembonus).w
0001af7a 0c400006	cmpi.w	#6,d0
0001af7e 6502	blo.s	.bonusokay
0001af80 7006	moveq	#6,d0
0001af82 3340003e	move.w	d0,objoff_3E(a1)
0001af86 303b004a	move.w	.points(pc,d0.w),d0
0001af8a 0c780020f7d0	cmpi.w	#$20,(v_itembonus).w
0001af90 650a	blo.s	.lessthan16
0001af92 303c03e8	move.w	#1000,d0
0001af96 337c000a003e	move.w	#$A,objoff_3E(a1)
0001af9c 610016ee	bsr.w	AddPoints
0001afa6 137c00000024	move.b	#0,obRoutine(a1)
0001afac 4a680012	tst.w	obVelY(a0)
0001afb0 6b10	bmi.s	.bouncedown
0001afb2 3028000c	move.w	obY(a0),d0
0001afb6 b069000c	cmp.w	obY(a1),d0
0001afba 640e	bhs.s	.bounceup
0001afbc 44680012	neg.w	obVelY(a0)
0001afc0 4e75	rts	
0001afc2 066801000012	addi.w	#$100,obVelY(a0)
0001afc8 4e75	rts	
0001afca 046801000012	subi.w	#$100,obVelY(a0)
0001afd0 4e75	rts	
0001afda 08e900070022	bset	#7,obStatus(a1)
0001afe0 4a38fe2d	tst.b	(v_invinc).w
0001afe4 6704	beq.s	.notinvincible
0001afe6 70ff	moveq	#-1,d0
0001afe8 4e75	rts	
0001afea 4e71	nop	
0001afec 4a680030	tst.w	flashtime(a0)
0001aff0 66f4	bne.s	.isflashing
0001aff2 2449	movea.l	a1,a2
0001aff4 4a38fe2c	tst.b	(v_shield).w
0001aff8 6622	bne.s	.hasshield
0001affa 4a78fe20	tst.w	(v_rings).w
0001affe 67000090	beq.w	.norings
0001b002 4eb90000da8c	jsr	(FindFreeObj).l
0001b008 6612	bne.s	.hasshield
0001b010 336800080008	move.w	obX(a0),obX(a1)
0001b016 3368000c000c	move.w	obY(a0),obY(a1)
0001b01c 11fc0000fe2c	move.b	#0,(v_shield).w
0001b022 117c00040024	move.b	#4,obRoutine(a0)
0001b028 61008776	bsr.w	Sonic_ResetOnFloor
0001b02c 08e800010022	bset	#1,obStatus(a0)
0001b032 317cfc000012	move.w	#-$400,obVelY(a0)
0001b038 317cfe000010	move.w	#-$200,obVelX(a0)
0001b03e 082800060022	btst	#6,obStatus(a0)
0001b044 670c	beq.s	.isdry
0001b046 317cfe000012	move.w	#-$200,obVelY(a0)
0001b04c 317cff000010	move.w	#-$100,obVelX(a0)
0001b052 30280008	move.w	obX(a0),d0
0001b056 b06a0008	cmp.w	obX(a2),d0
0001b05a 6504	blo.s	.isleft
0001b05c 44680010	neg.w	obVelX(a0)
0001b060 317c00000014	move.w	#0,obInertia(a0)
0001b066 117c001a001c	move.b	#id_Hurt,obAnim(a0)
0001b06c 317c00780030	move.w	#120,flashtime(a0)
0001b072 303c00a3	move.w	#sfx_Death,d0
0001b076 0c120036	cmpi.b	#id_Spikes,obID(a2)
0001b07a 660a	bne.s	.sound
0001b07c 0c120016	cmpi.b	#id_Harpoon,obID(a2)
0001b080 6604	bne.s	.sound
0001b082 303c00a6	move.w	#sfx_HitSpikes,d0
0001b086 4eb90000139c	jsr	(QueueSound2).l
0001b08c 70ff	moveq	#-1,d0
0001b08e 4e75	rts	
0001b090 4a78fffa	tst.w	(f_debugmode).w
0001b094 6600ff86	bne.w	.hasshield
0001b098 4a78fe08	tst.w	(v_debuguse).w
0001b09c 664e	bne.s	.dontdie
0001b09e 11fc0000fe2d	move.b	#0,(v_invinc).w
0001b0a4 117c00060024	move.b	#6,obRoutine(a0)
0001b0aa 610086f4	bsr.w	Sonic_ResetOnFloor
0001b0ae 08e800010022	bset	#1,obStatus(a0)
0001b0b4 317cf9000012	move.w	#-$700,obVelY(a0)
0001b0ba 317c00000010	move.w	#0,obVelX(a0)
0001b0c0 317c00000014	move.w	#0,obInertia(a0)
0001b0c6 3168000c0038	move.w	obY(a0),objoff_38(a0)
0001b0cc 117c0018001c	move.b	#id_Death,obAnim(a0)
0001b0d2 08e800070002	bset	#7,obGfx(a0)
0001b0d8 303c00a3	move.w	#sfx_Death,d0
0001b0dc 0c120036	cmpi.b	#id_Spikes,obID(a2)
0001b0e0 6604	bne.s	.sound
0001b0e2 303c00a6	move.w	#sfx_HitSpikes,d0
0001b0e6 4eb90000139c	jsr	(QueueSound2).l
0001b0ec 70ff	moveq	#-1,d0
0001b0ee 4e75	rts	
0001b0f0 12290020	move.b	obColType(a1),d1
0001b0f4 0201003f	andi.b	#$3F,d1
0001b0f8 0c01000b	cmpi.b	#$B,d1
0001b0fc 6714	beq.s	.caterkiller
0001b0fe 0c01000c	cmpi.b	#$C,d1
0001b102 6712	beq.s	.yadrin
0001b104 0c010017	cmpi.b	#$17,d1
0001b108 673e	beq.s	.D7orE1
0001b10a 0c010021	cmpi.b	#$21,d1
0001b10e 6738	beq.s	.D7orE1
0001b110 4e75	rts	
0001b112 6000fec6	bra.w	React_Caterkiller
0001b116 9a40	sub.w	d0,d5
0001b118 0c450008	cmpi.w	#8,d5
0001b11c 6426	bhs.s	.normalenemy
0001b11e 30290008	move.w	obX(a1),d0
0001b122 5940	subq.w	#4,d0
0001b124 082900000022	btst	#0,obStatus(a1)
0001b12a 6704	beq.s	.noflip
0001b12c 04400010	subi.w	#$10,d0
0001b130 9042	sub.w	d2,d0
0001b132 6408	bcc.s	.loc_1B13C
0001b134 06400018	addi.w	#$18,d0
0001b138 6506	bcs.s	.loc_1B140
0001b13a 6008	bra.s	.normalenemy
0001b13c b044	cmp.w	d4,d0
0001b13e 6204	bhi.s	.normalenemy
0001b140 6000fe9e	bra.w	React_ChkHurt
0001b144 6000fdea	bra.w	React_Enemy
0001b148 52290021	addq.b	#1,obColProp(a1)
0001b14c 4e75	rts	
0001b14e 61000140	bsr.w	SS_AniWallsRings
0001b152 6100037c	bsr.w	SS_AniItems
0001b156 3f05	move.w	d5,-(sp)
0001b158 43f88000	lea	(v_ssbuffer3).w,a1
0001b15c 1038f780	move.b	(v_ssangle).w,d0
0001b160 020000fc	andi.b	#$FC,d0
0001b164 4eb9000029da	jsr	(CalcSine).l
0001b16a 3800	move.w	d0,d4
0001b16c 3a01	move.w	d1,d5
0001b16e c9fc0018	muls.w	#$18,d4
0001b172 cbfc0018	muls.w	#$18,d5
0001b176 7400	moveq	#0,d2
0001b178 3438f700	move.w	(v_screenposx).w,d2
0001b17c 84fc0018	divu.w	#$18,d2
0001b180 4842	swap	d2
0001b182 4442	neg.w	d2
0001b184 0642ff4c	addi.w	#-$B4,d2
0001b188 7600	moveq	#0,d3
0001b18a 3638f704	move.w	(v_screenposy).w,d3
0001b18e 86fc0018	divu.w	#$18,d3
0001b192 4843	swap	d3
0001b194 4443	neg.w	d3
0001b196 0643ff4c	addi.w	#-$B4,d3
0001b19a 3e3c000f	move.w	#$10-1,d7
0001b19e 48a7e000	movem.w	d0-d2,-(sp)
0001b1a2 48a7c000	movem.w	d0-d1,-(sp)
0001b1a6 4440	neg.w	d0
0001b1a8 c3c2	muls.w	d2,d1
0001b1aa c1c3	muls.w	d3,d0
0001b1ac 2c00	move.l	d0,d6
0001b1ae dc81	add.l	d1,d6
0001b1b0 4c9f0003	movem.w	(sp)+,d0-d1
0001b1b4 c1c2	muls.w	d2,d0
0001b1b6 c3c3	muls.w	d3,d1
0001b1b8 d280	add.l	d0,d1
0001b1ba 2406	move.l	d6,d2
0001b1bc 3c3c000f	move.w	#$F,d6
0001b1c0 2002	move.l	d2,d0
0001b1c2 e080	asr.l	#8,d0
0001b1c4 32c0	move.w	d0,(a1)+
0001b1c6 2001	move.l	d1,d0
0001b1c8 e080	asr.l	#8,d0
0001b1ca 32c0	move.w	d0,(a1)+
0001b1cc d485	add.l	d5,d2
0001b1ce d284	add.l	d4,d1
0001b1d0 51ceffee	dbf	d6,loc_1B1C0
0001b1d4 4c9f0007	movem.w	(sp)+,d0-d2
0001b1d8 06430018	addi.w	#$18,d3
0001b1dc 51cfffc0	dbf	d7,loc_1B19E
0001b1e0 3a1f	move.w	(sp)+,d5
0001b1e2 41f900ff0000	lea	(v_ssbuffer1).l,a0
0001b1e8 7000	moveq	#0,d0
0001b1ea 3038f704	move.w	(v_screenposy).w,d0
0001b1ee 80fc0018	divu.w	#$18,d0
0001b1f2 c0fc0080	mulu.w	#$80,d0
0001b1f6 d1c0	adda.l	d0,a0
0001b1f8 7000	moveq	#0,d0
0001b1fa 3038f700	move.w	(v_screenposx).w,d0
0001b1fe 80fc0018	divu.w	#$18,d0
0001b202 d0c0	adda.w	d0,a0
0001b204 49f88000	lea	(v_ssbuffer3).w,a4
0001b208 3e3c000f	move.w	#$10-1,d7
0001b20c 3c3c000f	move.w	#$F,d6
0001b210 7000	moveq	#0,d0
0001b212 1018	move.b	(a0)+,d0
0001b214 6752	beq.s	loc_1B268
0001b216 0c00004e	cmpi.b	#$4E,d0
0001b21a 624c	bhi.s	loc_1B268
0001b21c 3614	move.w	(a4),d3
0001b21e 06430120	addi.w	#$120,d3
0001b222 0c430070	cmpi.w	#$70,d3
0001b226 6540	blo.s	loc_1B268
0001b228 0c4301d0	cmpi.w	#$1D0,d3
0001b22c 643a	bhs.s	loc_1B268
0001b22e 342c0002	move.w	2(a4),d2
0001b232 064200f0	addi.w	#$F0,d2
0001b236 0c420070	cmpi.w	#$70,d2
0001b23a 652c	blo.s	loc_1B268
0001b23c 0c420170	cmpi.w	#$170,d2
0001b240 6426	bhs.s	loc_1B268
0001b242 4bf900ff4000	lea	(v_ssblocktypes).l,a5
0001b248 e748	lsl.w	#3,d0
0001b24a 4bf50000	lea	(a5,d0.w),a5
0001b24e 225d	movea.l	(a5)+,a1
0001b250 321d	move.w	(a5)+,d1
0001b252 d241	add.w	d1,d1
0001b254 d2f11000	adda.w	(a1,d1.w),a1
0001b258 365d	movea.w	(a5)+,a3
0001b25a 7200	moveq	#0,d1
0001b25c 1219	move.b	(a1)+,d1
0001b25e 5301	subq.b	#1,d1
0001b260 6b06	bmi.s	loc_1B268
0001b262 4eb90000d762	jsr	(BuildSpr_Normal).l
0001b268 584c	addq.w	#4,a4
0001b26a 51ceffa4	dbf	d6,loc_1B210
0001b26e 41e80070	lea	$70(a0),a0
0001b272 51cfff98	dbf	d7,loc_1B20C
0001b276 11c5f62c	move.b	d5,(v_spritecount).w
0001b27a 0c050050	cmpi.b	#$50,d5
0001b27e 6708	beq.s	loc_1B288
0001b280 24bc00000000	move.l	#0,(a2)
0001b286 4e75	rts	
0001b288 157c0000fffb	move.b	#0,-5(a2)
0001b28e 4e75	rts	
0001b290 43f900ff400c	lea	(v_ssblocktypes+$C).l,a1
0001b296 7000	moveq	#0,d0
0001b298 1038f780	move.b	(v_ssangle).w,d0
0001b29c e408	lsr.b	#2,d0
0001b29e 0240000f	andi.w	#$F,d0
0001b2a2 7223	moveq	#$24-1,d1
0001b2a4 3280	move.w	d0,(a1)
0001b2a6 5049	addq.w	#8,a1
0001b2a8 51c9fffa	dbf	d1,loc_1B2A4
0001b2ac 43f900ff4005	lea	(v_ssblocktypes+5).l,a1
0001b2b2 5338fec2	subq.b	#1,(v_ani1_time).w
0001b2b6 6a10	bpl.s	loc_1B2C8
0001b2b8 11fc0007fec2	move.b	#7,(v_ani1_time).w
0001b2be 5238fec3	addq.b	#1,(v_ani1_frame).w
0001b2c2 02380003fec3	andi.b	#3,(v_ani1_frame).w
0001b2c8 1378fec301d0	move.b	(v_ani1_frame).w,$1D0(a1)
0001b2ce 5338fec4	subq.b	#1,(v_ani2_time).w
0001b2d2 6a10	bpl.s	loc_1B2E4
0001b2d4 11fc0007fec4	move.b	#7,(v_ani2_time).w
0001b2da 5238fec5	addq.b	#1,(v_ani2_frame).w
0001b2de 02380001fec5	andi.b	#1,(v_ani2_frame).w
0001b2e4 1038fec5	move.b	(v_ani2_frame).w,d0
0001b2e8 13400138	move.b	d0,$138(a1)
0001b2ec 13400160	move.b	d0,$160(a1)
0001b2f0 13400148	move.b	d0,$148(a1)
0001b2f4 13400150	move.b	d0,$150(a1)
0001b2f8 134001d8	move.b	d0,$1D8(a1)
0001b2fc 134001e0	move.b	d0,$1E0(a1)
0001b300 134001e8	move.b	d0,$1E8(a1)
0001b304 134001f0	move.b	d0,$1F0(a1)
0001b308 134001f8	move.b	d0,$1F8(a1)
0001b30c 13400200	move.b	d0,$200(a1)
0001b310 5338fec6	subq.b	#1,(v_ani3_time).w
0001b314 6a10	bpl.s	loc_1B326
0001b316 11fc0004fec6	move.b	#4,(v_ani3_time).w
0001b31c 5238fec7	addq.b	#1,(v_ani3_frame).w
0001b320 02380003fec7	andi.b	#3,(v_ani3_frame).w
0001b326 1038fec7	move.b	(v_ani3_frame).w,d0
0001b32a 13400168	move.b	d0,$168(a1)
0001b32e 13400170	move.b	d0,$170(a1)
0001b332 13400178	move.b	d0,$178(a1)
0001b336 13400180	move.b	d0,$180(a1)
0001b33a 5338fec0	subq.b	#1,(v_ani0_time).w
0001b33e 6a10	bpl.s	loc_1B350
0001b340 11fc0007fec0	move.b	#7,(v_ani0_time).w
0001b346 5338fec1	subq.b	#1,(v_ani0_frame).w
0001b34a 02380007fec1	andi.b	#7,(v_ani0_frame).w
0001b350 43f900ff4016	lea	(v_ssblocktypes+$16).l,a1
0001b356 41f90001b43a	lea	(SS_WaRiVramSet).l,a0
0001b35c 7000	moveq	#0,d0
0001b35e 1038fec1	move.b	(v_ani0_frame).w,d0
0001b362 d040	add.w	d0,d0
0001b364 41f00000	lea	(a0,d0.w),a0
0001b368 3290	move.w	(a0),(a1)
0001b36a 336800020008	move.w	2(a0),8(a1)
0001b370 336800040010	move.w	4(a0),$10(a1)
0001b376 336800060018	move.w	6(a0),$18(a1)
0001b37c 336800080020	move.w	8(a0),$20(a1)
0001b382 3368000a0028	move.w	$A(a0),$28(a1)
0001b388 3368000c0030	move.w	$C(a0),$30(a1)
0001b38e 3368000e0038	move.w	$E(a0),$38(a1)
0001b394 d0fc0020	adda.w	#$20,a0
0001b398 d2fc0048	adda.w	#$48,a1
0001b39c 3290	move.w	(a0),(a1)
0001b39e 336800020008	move.w	2(a0),8(a1)
0001b3a4 336800040010	move.w	4(a0),$10(a1)
0001b3aa 336800060018	move.w	6(a0),$18(a1)
0001b3b0 336800080020	move.w	8(a0),$20(a1)
0001b3b6 3368000a0028	move.w	$A(a0),$28(a1)
0001b3bc 3368000c0030	move.w	$C(a0),$30(a1)
0001b3c2 3368000e0038	move.w	$E(a0),$38(a1)
0001b3c8 d0fc0020	adda.w	#$20,a0
0001b3cc d2fc0048	adda.w	#$48,a1
0001b3d0 3290	move.w	(a0),(a1)
0001b3d2 336800020008	move.w	2(a0),8(a1)
0001b3d8 336800040010	move.w	4(a0),$10(a1)
0001b3de 336800060018	move.w	6(a0),$18(a1)
0001b3e4 336800080020	move.w	8(a0),$20(a1)
0001b3ea 3368000a0028	move.w	$A(a0),$28(a1)
0001b3f0 3368000c0030	move.w	$C(a0),$30(a1)
0001b3f6 3368000e0038	move.w	$E(a0),$38(a1)
0001b3fc d0fc0020	adda.w	#$20,a0
0001b400 d2fc0048	adda.w	#$48,a1
0001b404 3290	move.w	(a0),(a1)
0001b406 336800020008	move.w	2(a0),8(a1)
0001b40c 336800040010	move.w	4(a0),$10(a1)
0001b412 336800060018	move.w	6(a0),$18(a1)
0001b418 336800080020	move.w	8(a0),$20(a1)
0001b41e 3368000a0028	move.w	$A(a0),$28(a1)
0001b424 3368000c0030	move.w	$C(a0),$30(a1)
0001b42a 3368000e0038	move.w	$E(a0),$38(a1)
0001b430 d0fc0020	adda.w	#$20,a0
0001b434 d2fc0048	adda.w	#$48,a1
0001b438 4e75	rts	
0001b4ba 45f900ff4400	lea	(v_ssitembuffer).l,a2
0001b4c0 303c001f	move.w	#(v_ssitembuffer_end-v_ssitembuffer)/8-1,d0
0001b4c4 4a12	tst.b	(a2)
0001b4c6 6706	beq.s	locret_1B4CE
0001b4c8 504a	addq.w	#8,a2
0001b4ca 51c8fff8	dbf	d0,loc_1B4C4
0001b4ce 4e75	rts	
0001b4d0 41f900ff4400	lea	(v_ssitembuffer).l,a0
0001b4d6 3e3c001f	move.w	#(v_ssitembuffer_end-v_ssitembuffer)/8-1,d7
0001b4da 7000	moveq	#0,d0
0001b4dc 1010	move.b	(a0),d0
0001b4de 6708	beq.s	loc_1B4E8
0001b4e0 e548	lsl.w	#2,d0
0001b4e2 227b0008	movea.l	SS_AniIndex-4(pc,d0.w),a1
0001b4e6 4e91	jsr	(a1)
0001b4e8 5048	addq.w	#8,a0
0001b4ea 51cfffee	dbf	d7,loc_1B4DA
0001b4ee 4e75	rts	
0001b508 53280002	subq.b	#1,2(a0)
0001b50c 6a22	bpl.s	locret_1B530
0001b50e 117c00050002	move.b	#5,2(a0)
0001b514 7000	moveq	#0,d0
0001b516 10280003	move.b	3(a0),d0
0001b51a 52280003	addq.b	#1,3(a0)
0001b51e 22680004	movea.l	4(a0),a1
0001b522 103b000e	move.b	SS_AniRingData(pc,d0.w),d0
0001b526 1280	move.b	d0,(a1)
0001b528 6606	bne.s	locret_1B530
0001b52a 4290	clr.l	(a0)
0001b52c 42a80004	clr.l	4(a0)
0001b530 4e75	rts	
0001b538 53280002	subq.b	#1,2(a0)
0001b53c 6a28	bpl.s	locret_1B566
0001b53e 117c00070002	move.b	#7,2(a0)
0001b544 7000	moveq	#0,d0
0001b546 10280003	move.b	3(a0),d0
0001b54a 52280003	addq.b	#1,3(a0)
0001b54e 22680004	movea.l	4(a0),a1
0001b552 103b0014	move.b	SS_AniBumpData(pc,d0.w),d0
0001b556 660c	bne.s	loc_1B564
0001b558 4290	clr.l	(a0)
0001b55a 42a80004	clr.l	4(a0)
0001b55e 12bc0025	move.b	#$25,(a1)
0001b562 4e75	rts	
0001b564 1280	move.b	d0,(a1)
0001b566 4e75	rts	
0001b56e 53280002	subq.b	#1,2(a0)
0001b572 6a22	bpl.s	locret_1B596
0001b574 117c00050002	move.b	#5,2(a0)
0001b57a 7000	moveq	#0,d0
0001b57c 10280003	move.b	3(a0),d0
0001b580 52280003	addq.b	#1,3(a0)
0001b584 22680004	movea.l	4(a0),a1
0001b588 103b000e	move.b	SS_Ani1UpData(pc,d0.w),d0
0001b58c 1280	move.b	d0,(a1)
0001b58e 6606	bne.s	locret_1B596
0001b590 4290	clr.l	(a0)
0001b592 42a80004	clr.l	4(a0)
0001b596 4e75	rts	
0001b59e 53280002	subq.b	#1,2(a0)
0001b5a2 6a28	bpl.s	locret_1B5CC
0001b5a4 117c00070002	move.b	#7,2(a0)
0001b5aa 7000	moveq	#0,d0
0001b5ac 10280003	move.b	3(a0),d0
0001b5b0 52280003	addq.b	#1,3(a0)
0001b5b4 22680004	movea.l	4(a0),a1
0001b5b8 103b0014	move.b	SS_AniRevData(pc,d0.w),d0
0001b5bc 660c	bne.s	loc_1B5CA
0001b5be 4290	clr.l	(a0)
0001b5c0 42a80004	clr.l	4(a0)
0001b5c4 12bc002b	move.b	#$2B,(a1)
0001b5c8 4e75	rts	
0001b5ca 1280	move.b	d0,(a1)
0001b5cc 4e75	rts	
0001b5d4 53280002	subq.b	#1,2(a0)
0001b5d8 6a32	bpl.s	locret_1B60C
0001b5da 117c00050002	move.b	#5,2(a0)
0001b5e0 7000	moveq	#0,d0
0001b5e2 10280003	move.b	3(a0),d0
0001b5e6 52280003	addq.b	#1,3(a0)
0001b5ea 22680004	movea.l	4(a0),a1
0001b5ee 103b001e	move.b	SS_AniEmerData(pc,d0.w),d0
0001b5f2 1280	move.b	d0,(a1)
0001b5f4 6616	bne.s	locret_1B60C
0001b5f6 4290	clr.l	(a0)
0001b5f8 42a80004	clr.l	4(a0)
0001b5fc 11fc0004d024	move.b	#4,(v_player+obRoutine).w
0001b602 303c00a8	move.w	#sfx_SSGoal,d0
0001b606 4eb90000139c	jsr	(QueueSound2).l
0001b60c 4e75	rts	
0001b614 53280002	subq.b	#1,2(a0)
0001b618 6a26	bpl.s	locret_1B640
0001b61a 117c00010002	move.b	#1,2(a0)
0001b620 7000	moveq	#0,d0
0001b622 10280003	move.b	3(a0),d0
0001b626 52280003	addq.b	#1,3(a0)
0001b62a 22680004	movea.l	4(a0),a1
0001b62e 103b0012	move.b	SS_AniGlassData(pc,d0.w),d0
0001b632 1280	move.b	d0,(a1)
0001b634 660a	bne.s	locret_1B640
0001b636 12a80004	move.b	4(a0),(a1)
0001b63a 4290	clr.l	(a0)
0001b63c 42a80004	clr.l	4(a0)
0001b640 4e75	rts	
0001b67c 7000	moveq	#0,d0
0001b67e 1038fe16	move.b	(v_lastspecial).w,d0
0001b682 5238fe16	addq.b	#1,(v_lastspecial).w
0001b686 0c380006fe16	cmpi.b	#6,(v_lastspecial).w
0001b68c 6506	blo.s	SS_ChkEmldNum
0001b68e 11fc0000fe16	move.b	#0,(v_lastspecial).w
0001b694 0c380006fe57	cmpi.b	#6,(v_emeralds).w
0001b69a 671a	beq.s	SS_LoadData
0001b69c 7200	moveq	#0,d1
0001b69e 1238fe57	move.b	(v_emeralds).w,d1
0001b6a2 5301	subq.b	#1,d1
0001b6a4 6510	blo.s	SS_LoadData
0001b6a6 47f8fe58	lea	(v_emldlist).w,a3
0001b6aa b0331000	cmp.b	(a3,d1.w),d0
0001b6ae 6602	bne.s	SS_ChkEmldRepeat
0001b6b0 60ca	bra.s	SS_Load
0001b6b2 51c9fff6	dbf	d1,SS_ChkEmldLoop
0001b6b6 e548	lsl.w	#2,d0
0001b6b8 43fb00aa	lea	SS_StartLoc(pc,d0.w),a1
0001b6bc 31d9d008	move.w	(a1)+,(v_player+obX).w
0001b6c0 31d9d00c	move.w	(a1)+,(v_player+obY).w
0001b6c4 207b0086	movea.l	SS_LayoutIndex(pc,d0.w),a0
0001b6c8 43f900ff4000	lea	(v_ssbuffer2).l,a1
0001b6ce 303c0000	move.w	#ArtTile_SS_Background_Clouds,d0
0001b6d2 4eb90000171e	jsr	(EniDec).l
0001b6d8 43f900ff0000	lea	(v_ssbuffer1).l,a1
0001b6de 303c0fff	move.w	#(v_ssbuffer2-v_ssbuffer1)/4-1,d0
0001b6e2 4299	clr.l	(a1)+
0001b6e4 51c8fffc	dbf	d0,SS_ClrRAM3
0001b6e8 43f900ff1020	lea	(v_ssblockbuffer).l,a1
0001b6ee 41f900ff4000	lea	(v_ssbuffer2).l,a0
0001b6f4 723f	moveq	#(v_ssblockbuffer_end-v_ssblockbuffer)/$80-1,d1
0001b6f6 743f	moveq	#$40-1,d2
0001b6f8 12d8	move.b	(a0)+,(a1)+
0001b6fa 51cafffc	dbf	d2,loc_1B6F8
0001b6fe 43e90040	lea	$40(a1),a1
0001b702 51c9fff2	dbf	d1,loc_1B6F6
0001b706 43f900ff4008	lea	(v_ssblocktypes+8).l,a1
0001b70c 41f90001b738	lea	(SS_MapIndex).l,a0
0001b712 724d	moveq	#(SS_MapIndex_End-SS_MapIndex)/6-1,d1
0001b714 22d8	move.l	(a0)+,(a1)+
0001b716 32fc0000	move.w	#0,(a1)+
0001b71a 1368fffcffff	move.b	-4(a0),-1(a1)
0001b720 32d8	move.w	(a0)+,(a1)+
0001b722 51c9fff0	dbf	d1,loc_1B714
0001b726 43f900ff4400	lea	(v_ssitembuffer).l,a1
0001b72c 323c003f	move.w	#(v_ssitembuffer_end-v_ssitembuffer)/4-1,d1
0001b730 4299	clr.l	(a1)+
0001b732 51c9fffc	dbf	d1,loc_1B730
0001b736 4e75	rts	
0001b984 4a78fe08	tst.w	(v_debuguse).w
0001b988 6708	beq.s	Obj09_Normal
0001b98a 6100022a	bsr.w	SS_FixCamera
0001b98e 6000158a	bra.w	DebugMode
0001b992 7000	moveq	#0,d0
0001b994 10280024	move.b	obRoutine(a0),d0
0001b998 323b0006	move.w	Obj09_Index(pc,d0.w),d1
0001b99c 4efb1002	jmp	Obj09_Index(pc,d1.w)
0001b9a8 54280024	addq.b	#2,obRoutine(a0)
0001b9ac 117c000e0016	move.b	#$E,obHeight(a0)
0001b9b2 117c00070017	move.b	#7,obWidth(a0)
0001b9b8 217c000211e20004	move.l	#Map_Sonic,obMap(a0)
0001b9c0 317c07800002	move.w	#ArtTile_Sonic,obGfx(a0)
0001b9c6 117c00040001	move.b	#4,obRender(a0)
0001b9cc 117c00000018	move.b	#0,obPriority(a0)
0001b9d2 117c0002001c	move.b	#id_Roll,obAnim(a0)
0001b9d8 08e800020022	bset	#2,obStatus(a0)
0001b9de 08e800010022	bset	#1,obStatus(a0)
0001b9e4 4a78fffa	tst.w	(f_debugmode).w
0001b9e8 670e	beq.s	Obj09_NoDebug
0001b9ea 08380004f605	btst	#bitB,(v_jpadpress1).w
0001b9f0 6706	beq.s	Obj09_NoDebug
0001b9f2 31fc0001fe08	move.w	#1,(v_debuguse).w
0001b9f8 117c00000030	move.b	#0,objoff_30(a0)
0001b9fe 7000	moveq	#0,d0
0001ba00 10280022	move.b	obStatus(a0),d0
0001ba04 02400002	andi.w	#2,d0
0001ba08 323b0012	move.w	Obj09_Modes(pc,d0.w),d1
0001ba0c 4ebb100e	jsr	Obj09_Modes(pc,d1.w)
0001ba10 4eb900013c3e	jsr	(Sonic_LoadGfx).l
0001ba16 4ef90000d604	jmp	(DisplaySprite).l
0001ba20 61000134	bsr.w	Obj09_Jump
0001ba24 6100003a	bsr.w	Obj09_Move
0001ba28 6100022c	bsr.w	Obj09_Fall
0001ba2c 600c	bra.s	Obj09_Display
0001ba2e 6100016a	bsr.w	nullsub_2
0001ba32 6100002c	bsr.w	Obj09_Move
0001ba36 6100021e	bsr.w	Obj09_Fall
0001ba3a 61000316	bsr.w	Obj09_ChkItems
0001ba3e 6100044e	bsr.w	Obj09_ChkItems2
0001ba42 4eb90000d5de	jsr	(SpeedToPos).l
0001ba48 6100016c	bsr.w	SS_FixCamera
0001ba4c 3038f780	move.w	(v_ssangle).w,d0
0001ba50 d078f782	add.w	(v_ssrotate).w,d0
0001ba54 31c0f780	move.w	d0,(v_ssangle).w
0001ba58 4eb9000139c4	jsr	(Sonic_Animate).l
0001ba5e 4e75	rts	
0001ba60 08380002f602	btst	#bitL,(v_jpadhold2).w
0001ba66 6704	beq.s	Obj09_ChkRight
0001ba68 6100008e	bsr.w	Obj09_MoveLeft
0001ba6c 08380003f602	btst	#bitR,(v_jpadhold2).w
0001ba72 6704	beq.s	loc_1BA78
0001ba74 610000b2	bsr.w	Obj09_MoveRight
0001ba78 1038f602	move.b	(v_jpadhold2).w,d0
0001ba7c 0200000c	andi.b	#btnL+btnR,d0
0001ba80 6626	bne.s	loc_1BAA8
0001ba82 30280014	move.w	obInertia(a0),d0
0001ba86 6720	beq.s	loc_1BAA8
0001ba88 6b10	bmi.s	loc_1BA9A
0001ba8a 0440000c	subi.w	#$C,d0
0001ba8e 6404	bcc.s	loc_1BA94
0001ba90 303c0000	move.w	#0,d0
0001ba94 31400014	move.w	d0,obInertia(a0)
0001ba98 600e	bra.s	loc_1BAA8
0001ba9a 0640000c	addi.w	#$C,d0
0001ba9e 6404	bcc.s	loc_1BAA4
0001baa0 303c0000	move.w	#0,d0
0001baa4 31400014	move.w	d0,obInertia(a0)
0001baa8 1038f780	move.b	(v_ssangle).w,d0
0001baac 06000020	addi.b	#$20,d0
0001bab0 020000c0	andi.b	#$C0,d0
0001bab4 4400	neg.b	d0
0001bab6 4eb9000029da	jsr	(CalcSine).l
0001babc c3e80014	muls.w	obInertia(a0),d1
0001bac0 d3a80008	add.l	d1,obX(a0)
0001bac4 c1e80014	muls.w	obInertia(a0),d0
0001bac8 d1a8000c	add.l	d0,obY(a0)
0001bacc 48e7c000	movem.l	d0-d1,-(sp)
0001bad0 2428000c	move.l	obY(a0),d2
0001bad4 26280008	move.l	obX(a0),d3
0001bad8 6100020e	bsr.w	sub_1BCE8
0001badc 6714	beq.s	loc_1BAF2
0001bade 4cdf0003	movem.l	(sp)+,d0-d1
0001bae2 93a80008	sub.l	d1,obX(a0)
0001bae6 91a8000c	sub.l	d0,obY(a0)
0001baea 317c00000014	move.w	#0,obInertia(a0)
0001baf0 4e75	rts	
0001baf2 4cdf0003	movem.l	(sp)+,d0-d1
0001baf6 4e75	rts	
0001baf8 08e800000022	bset	#0,obStatus(a0)
0001bafe 30280014	move.w	obInertia(a0),d0
0001bb02 6702	beq.s	loc_1BB06
0001bb04 6a14	bpl.s	loc_1BB1A
0001bb06 0440000c	subi.w	#$C,d0
0001bb0a 0c40f800	cmpi.w	#-$800,d0
0001bb0e 6e04	bgt.s	loc_1BB14
0001bb10 303cf800	move.w	#-$800,d0
0001bb14 31400014	move.w	d0,obInertia(a0)
0001bb18 4e75	rts	
0001bb1a 04400040	subi.w	#$40,d0
0001bb1e 6402	bcc.s	loc_1BB22
0001bb20 4e71	nop	
0001bb22 31400014	move.w	d0,obInertia(a0)
0001bb26 4e75	rts	
0001bb28 08a800000022	bclr	#0,obStatus(a0)
0001bb2e 30280014	move.w	obInertia(a0),d0
0001bb32 6b14	bmi.s	loc_1BB48
0001bb34 0640000c	addi.w	#$C,d0
0001bb38 0c400800	cmpi.w	#$800,d0
0001bb3c 6d04	blt.s	loc_1BB42
0001bb3e 303c0800	move.w	#$800,d0
0001bb42 31400014	move.w	d0,obInertia(a0)
0001bb46 600c	bra.s	locret_1BB54
0001bb48 06400040	addi.w	#$40,d0
0001bb4c 6402	bcc.s	loc_1BB50
0001bb4e 4e71	nop	
0001bb50 31400014	move.w	d0,obInertia(a0)
0001bb54 4e75	rts	
0001bb56 1038f603	move.b	(v_jpadpress2).w,d0
0001bb5a 02000070	andi.b	#btnABC,d0
0001bb5e 6738	beq.s	Obj09_NoJump
0001bb60 1038f780	move.b	(v_ssangle).w,d0
0001bb64 020000fc	andi.b	#$FC,d0
0001bb68 4400	neg.b	d0
0001bb6a 04000040	subi.b	#$40,d0
0001bb6e 4eb9000029da	jsr	(CalcSine).l
0001bb74 c3fc0680	muls.w	#$680,d1
0001bb78 e081	asr.l	#8,d1
0001bb7a 31410010	move.w	d1,obVelX(a0)
0001bb7e c1fc0680	muls.w	#$680,d0
0001bb82 e080	asr.l	#8,d0
0001bb84 31400012	move.w	d0,obVelY(a0)
0001bb88 08e800010022	bset	#1,obStatus(a0)
0001bb8e 303c00a0	move.w	#sfx_Jump,d0
0001bb92 4eb90000139c	jsr	(QueueSound2).l
0001bb98 4e75	rts	
0001bb9a 4e75	rts	
0001bb9c 323cfc00	move.w	#-$400,d1
0001bba0 b2680012	cmp.w	obVelY(a0),d1
0001bba4 6f0e	ble.s	.return
0001bba6 1038f602	move.b	(v_jpadhold2).w,d0
0001bbaa 02000070	andi.b	#btnABC,d0
0001bbae 6604	bne.s	.return
0001bbb0 31410012	move.w	d1,obVelY(a0)
0001bbb4 4e75	rts	
0001bbb6 3428000c	move.w	obY(a0),d2
0001bbba 36280008	move.w	obX(a0),d3
0001bbbe 3038f700	move.w	(v_screenposx).w,d0
0001bbc2 044300a0	subi.w	#$A0,d3
0001bbc6 6506	bcs.s	loc_1BBCE
0001bbc8 9043	sub.w	d3,d0
0001bbca 9178f700	sub.w	d0,(v_screenposx).w
0001bbce 3038f704	move.w	(v_screenposy).w,d0
0001bbd2 04420070	subi.w	#$70,d2
0001bbd6 6506	bcs.s	locret_1BBDE
0001bbd8 9042	sub.w	d2,d0
0001bbda 9178f704	sub.w	d0,(v_screenposy).w
0001bbde 4e75	rts	
0001bbe0 06780040f782	addi.w	#$40,(v_ssrotate).w
0001bbe6 0c781800f782	cmpi.w	#$1800,(v_ssrotate).w
0001bbec 6606	bne.s	loc_1BBF4
0001bbee 11fc000cf600	move.b	#id_Level,(v_gamemode).w
0001bbf4 0c783000f782	cmpi.w	#$3000,(v_ssrotate).w
0001bbfa 6d16	blt.s	loc_1BC12
0001bbfc 31fc0000f782	move.w	#0,(v_ssrotate).w
0001bc02 31fc4000f780	move.w	#$4000,(v_ssangle).w
0001bc08 54280024	addq.b	#2,obRoutine(a0)
0001bc0c 317c003c0038	move.w	#$3C,objoff_38(a0)
0001bc12 3038f780	move.w	(v_ssangle).w,d0
0001bc16 d078f782	add.w	(v_ssrotate).w,d0
0001bc1a 31c0f780	move.w	d0,(v_ssangle).w
0001bc1e 4eb9000139c4	jsr	(Sonic_Animate).l
0001bc24 4eb900013c3e	jsr	(Sonic_LoadGfx).l
0001bc2a 6100ff8a	bsr.w	SS_FixCamera
0001bc2e 4ef90000d604	jmp	(DisplaySprite).l
0001bc34 53680038	subq.w	#1,objoff_38(a0)
0001bc38 6606	bne.s	loc_1BC40
0001bc3a 11fc000cf600	move.b	#id_Level,(v_gamemode).w
0001bc40 4eb9000139c4	jsr	(Sonic_Animate).l
0001bc46 4eb900013c3e	jsr	(Sonic_LoadGfx).l
0001bc4c 6100ff68	bsr.w	SS_FixCamera
0001bc50 4ef90000d604	jmp	(DisplaySprite).l
0001bc56 2428000c	move.l	obY(a0),d2
0001bc5a 26280008	move.l	obX(a0),d3
0001bc5e 1038f780	move.b	(v_ssangle).w,d0
0001bc62 020000fc	andi.b	#$FC,d0
0001bc66 4eb9000029da	jsr	(CalcSine).l
0001bc6c 38280010	move.w	obVelX(a0),d4
0001bc70 48c4	ext.l	d4
0001bc72 e184	asl.l	#8,d4
0001bc74 c1fc002a	muls.w	#$2A,d0
0001bc78 d084	add.l	d4,d0
0001bc7a 38280012	move.w	obVelY(a0),d4
0001bc7e 48c4	ext.l	d4
0001bc80 e184	asl.l	#8,d4
0001bc82 c3fc002a	muls.w	#$2A,d1
0001bc86 d284	add.l	d4,d1
0001bc88 d680	add.l	d0,d3
0001bc8a 6100005c	bsr.w	sub_1BCE8
0001bc8e 6720	beq.s	loc_1BCB0
0001bc90 9680	sub.l	d0,d3
0001bc92 7000	moveq	#0,d0
0001bc94 31400010	move.w	d0,obVelX(a0)
0001bc98 08a800010022	bclr	#1,obStatus(a0)
0001bc9e d481	add.l	d1,d2
0001bca0 61000046	bsr.w	sub_1BCE8
0001bca4 6720	beq.s	loc_1BCC6
0001bca6 9481	sub.l	d1,d2
0001bca8 7200	moveq	#0,d1
0001bcaa 31410012	move.w	d1,obVelY(a0)
0001bcae 4e75	rts	
0001bcb0 d481	add.l	d1,d2
0001bcb2 61000034	bsr.w	sub_1BCE8
0001bcb6 671c	beq.s	loc_1BCD4
0001bcb8 9481	sub.l	d1,d2
0001bcba 7200	moveq	#0,d1
0001bcbc 31410012	move.w	d1,obVelY(a0)
0001bcc0 08a800010022	bclr	#1,obStatus(a0)
0001bcc6 e080	asr.l	#8,d0
0001bcc8 e081	asr.l	#8,d1
0001bcca 31400010	move.w	d0,obVelX(a0)
0001bcce 31410012	move.w	d1,obVelY(a0)
0001bcd2 4e75	rts	
0001bcd4 e080	asr.l	#8,d0
0001bcd6 e081	asr.l	#8,d1
0001bcd8 31400010	move.w	d0,obVelX(a0)
0001bcdc 31410012	move.w	d1,obVelY(a0)
0001bce0 08e800010022	bset	#1,obStatus(a0)
0001bce6 4e75	rts	
0001bce8 43f900ff0000	lea	(v_ssbuffer1).l,a1
0001bcee 7800	moveq	#0,d4
0001bcf0 4842	swap	d2
0001bcf2 3802	move.w	d2,d4
0001bcf4 4842	swap	d2
0001bcf6 06440044	addi.w	#$44,d4
0001bcfa 88fc0018	divu.w	#$18,d4
0001bcfe c8fc0080	mulu.w	#$80,d4
0001bd02 d3c4	adda.l	d4,a1
0001bd04 7800	moveq	#0,d4
0001bd06 4843	swap	d3
0001bd08 3803	move.w	d3,d4
0001bd0a 4843	swap	d3
0001bd0c 06440014	addi.w	#$14,d4
0001bd10 88fc0018	divu.w	#$18,d4
0001bd14 d2c4	adda.w	d4,a1
0001bd16 7a00	moveq	#0,d5
0001bd18 1819	move.b	(a1)+,d4
0001bd1a 6114	bsr.s	sub_1BD30
0001bd1c 1819	move.b	(a1)+,d4
0001bd1e 6110	bsr.s	sub_1BD30
0001bd20 d2fc007e	adda.w	#$7E,a1
0001bd24 1819	move.b	(a1)+,d4
0001bd26 6108	bsr.s	sub_1BD30
0001bd28 1819	move.b	(a1)+,d4
0001bd2a 6104	bsr.s	sub_1BD30
0001bd2c 4a05	tst.b	d5
0001bd2e 4e75	rts	
0001bd30 6712	beq.s	locret_1BD44
0001bd32 0c040028	cmpi.b	#$28,d4
0001bd36 670c	beq.s	locret_1BD44
0001bd38 0c04003a	cmpi.b	#$3A,d4
0001bd3c 6508	blo.s	loc_1BD46
0001bd3e 0c04004b	cmpi.b	#$4B,d4
0001bd42 6402	bhs.s	loc_1BD46
0001bd44 4e75	rts	
0001bd46 11440030	move.b	d4,objoff_30(a0)
0001bd4a 21490032	move.l	a1,objoff_32(a0)
0001bd4e 7aff	moveq	#-1,d5
0001bd50 4e75	rts	
0001bd52 43f900ff0000	lea	(v_ssbuffer1).l,a1
0001bd58 7800	moveq	#0,d4
0001bd5a 3828000c	move.w	obY(a0),d4
0001bd5e 06440050	addi.w	#$50,d4
0001bd62 88fc0018	divu.w	#$18,d4
0001bd66 c8fc0080	mulu.w	#$80,d4
0001bd6a d3c4	adda.l	d4,a1
0001bd6c 7800	moveq	#0,d4
0001bd6e 38280008	move.w	obX(a0),d4
0001bd72 06440020	addi.w	#$20,d4
0001bd76 88fc0018	divu.w	#$18,d4
0001bd7a d2c4	adda.w	d4,a1
0001bd7c 1811	move.b	(a1),d4
0001bd7e 660c	bne.s	Obj09_ChkCont
0001bd80 4a28003a	tst.b	objoff_3A(a0)
0001bd84 660000d6	bne.w	Obj09_MakeGhostSolid
0001bd88 7800	moveq	#0,d4
0001bd8a 4e75	rts	
0001bd8c 0c04003a	cmpi.b	#$3A,d4
0001bd90 6636	bne.s	Obj09_Chk1Up
0001bd92 6100f726	bsr.w	SS_RemoveCollectedItem
0001bd96 6608	bne.s	Obj09_GetCont
0001bd98 14bc0001	move.b	#1,(a2)
0001bd9c 25490004	move.l	a1,4(a2)
0001bda0 4eb900009c76	jsr	(CollectRing).l
0001bda6 0c780032fe20	cmpi.w	#50,(v_rings).w
0001bdac 6516	blo.s	Obj09_NoCont
0001bdae 08f80000fe1b	bset	#0,(v_lifecount).w
0001bdb4 660e	bne.s	Obj09_NoCont
0001bdb6 5238fe18	addq.b	#1,(v_continues).w
0001bdba 303c00bf	move.w	#sfx_Continue,d0
0001bdbe 4eb900001396	jsr	(QueueSound1).l
0001bdc4 7800	moveq	#0,d4
0001bdc6 4e75	rts	
0001bdc8 0c040028	cmpi.b	#$28,d4
0001bdcc 6624	bne.s	Obj09_ChkEmer
0001bdce 6100f6ea	bsr.w	SS_RemoveCollectedItem
0001bdd2 6608	bne.s	Obj09_Get1Up
0001bdd4 14bc0003	move.b	#3,(a2)
0001bdd8 25490004	move.l	a1,4(a2)
0001bddc 5238fe12	addq.b	#1,(v_lives).w
0001bde0 5238fe1c	addq.b	#1,(f_lifecount).w
0001bde4 303c0088	move.w	#bgm_ExtraLife,d0
0001bde8 4eb900001396	jsr	(QueueSound1).l
0001bdee 7800	moveq	#0,d4
0001bdf0 4e75	rts	
0001bdf2 0c04003b	cmpi.b	#$3B,d4
0001bdf6 6540	blo.s	Obj09_ChkGhost
0001bdf8 0c040040	cmpi.b	#$40,d4
0001bdfc 623a	bhi.s	Obj09_ChkGhost
0001bdfe 6100f6ba	bsr.w	SS_RemoveCollectedItem
0001be02 6608	bne.s	Obj09_GetEmer
0001be04 14bc0005	move.b	#5,(a2)
0001be08 25490004	move.l	a1,4(a2)
0001be0c 0c380006fe57	cmpi.b	#6,(v_emeralds).w
0001be12 6716	beq.s	Obj09_NoEmer
0001be14 0404003b	subi.b	#$3B,d4
0001be18 7000	moveq	#0,d0
0001be1a 1038fe57	move.b	(v_emeralds).w,d0
0001be1e 45f8fe58	lea	(v_emldlist).w,a2
0001be22 15840000	move.b	d4,(a2,d0.w)
0001be26 5238fe57	addq.b	#1,(v_emeralds).w
0001be2a 303c0093	move.w	#bgm_Emerald,d0
0001be2e 4eb90000139c	jsr	(QueueSound2).l
0001be34 7800	moveq	#0,d4
0001be36 4e75	rts	
0001be38 0c040041	cmpi.b	#$41,d4
0001be3c 6606	bne.s	Obj09_ChkGhostTag
0001be3e 117c0001003a	move.b	#1,objoff_3A(a0)
0001be44 0c04004a	cmpi.b	#$4A,d4
0001be48 660e	bne.s	Obj09_NoGhost
0001be4a 0c280001003a	cmpi.b	#1,objoff_3A(a0)
0001be50 6606	bne.s	Obj09_NoGhost
0001be52 117c0002003a	move.b	#2,objoff_3A(a0)
0001be58 78ff	moveq	#-1,d4
0001be5a 4e75	rts	
0001be5c 0c280002003a	cmpi.b	#2,objoff_3A(a0)
0001be62 6622	bne.s	Obj09_GhostNotSolid
0001be64 43f900ff1020	lea	(v_ssblockbuffer).l,a1
0001be6a 723f	moveq	#(v_ssblockbuffer_end-v_ssblockbuffer)/$80-1,d1
0001be6c 743f	moveq	#$40-1,d2
0001be6e 0c110041	cmpi.b	#$41,(a1)
0001be72 6604	bne.s	Obj09_NoReplace
0001be74 12bc002c	move.b	#$2C,(a1)
0001be78 5249	addq.w	#1,a1
0001be7a 51cafff2	dbf	d2,Obj09_GhostLoop
0001be7e 43e90040	lea	$40(a1),a1
0001be82 51c9ffe8	dbf	d1,Obj09_GhostLoop2
0001be86 4228003a	clr.b	objoff_3A(a0)
0001be8a 7800	moveq	#0,d4
0001be8c 4e75	rts	
0001be8e 10280030	move.b	objoff_30(a0),d0
0001be92 661a	bne.s	Obj09_ChkBumper
0001be94 53280036	subq.b	#1,objoff_36(a0)
0001be98 6a06	bpl.s	loc_1BEA0
0001be9a 117c00000036	move.b	#0,objoff_36(a0)
0001bea0 53280037	subq.b	#1,objoff_37(a0)
0001bea4 6a06	bpl.s	locret_1BEAC
0001bea6 117c00000037	move.b	#0,objoff_37(a0)
0001beac 4e75	rts	
0001beae 0c000025	cmpi.b	#$25,d0
0001beb2 6672	bne.s	Obj09_GOAL
0001beb4 22280032	move.l	objoff_32(a0),d1
0001beb8 048100ff0001	subi.l	#$FF0001,d1
0001bebe 3401	move.w	d1,d2
0001bec0 0241007f	andi.w	#$7F,d1
0001bec4 c2fc0018	mulu.w	#$18,d1
0001bec8 04410014	subi.w	#$14,d1
0001becc ee4a	lsr.w	#7,d2
0001bece 0242007f	andi.w	#$7F,d2
0001bed2 c4fc0018	mulu.w	#$18,d2
0001bed6 04420044	subi.w	#$44,d2
0001beda 92680008	sub.w	obX(a0),d1
0001bede 9468000c	sub.w	obY(a0),d2
0001bee2 4eb900002ca8	jsr	(CalcAngle).l
0001bee8 4eb9000029da	jsr	(CalcSine).l
0001beee c3fcf900	muls.w	#-$700,d1
0001bef2 e081	asr.l	#8,d1
0001bef4 31410010	move.w	d1,obVelX(a0)
0001bef8 c1fcf900	muls.w	#-$700,d0
0001befc e080	asr.l	#8,d0
0001befe 31400012	move.w	d0,obVelY(a0)
0001bf02 08e800010022	bset	#1,obStatus(a0)
0001bf08 6100f5b0	bsr.w	SS_RemoveCollectedItem
0001bf0c 660e	bne.s	Obj09_BumpSnd
0001bf0e 14bc0002	move.b	#2,(a2)
0001bf12 20280032	move.l	objoff_32(a0),d0
0001bf16 5380	subq.l	#1,d0
0001bf18 25400004	move.l	d0,4(a2)
0001bf1c 303c00b4	move.w	#sfx_Bumper,d0
0001bf20 4ef90000139c	jmp	(QueueSound2).l
0001bf26 0c000027	cmpi.b	#$27,d0
0001bf2a 6610	bne.s	Obj09_UPblock
0001bf2c 54280024	addq.b	#2,obRoutine(a0)
0001bf30 303c00a8	move.w	#sfx_SSGoal,d0
0001bf34 4eb90000139c	jsr	(QueueSound2).l
0001bf3a 4e75	rts	
0001bf3c 0c000029	cmpi.b	#$29,d0
0001bf40 662e	bne.s	Obj09_DOWNblock
0001bf42 4a280036	tst.b	objoff_36(a0)
0001bf46 660000d8	bne.w	Obj09_NoGlass
0001bf4a 117c001e0036	move.b	#$1E,objoff_36(a0)
0001bf50 08380006f783	btst	#6,(v_ssrotate+1).w
0001bf56 670e	beq.s	Obj09_UPsnd
0001bf58 e1f8f782	asl.w	(v_ssrotate).w
0001bf5c 22680032	movea.l	objoff_32(a0),a1
0001bf60 5389	subq.l	#1,a1
0001bf62 12bc002a	move.b	#$2A,(a1)
0001bf66 303c00a9	move.w	#sfx_SSItem,d0
0001bf6a 4ef90000139c	jmp	(QueueSound2).l
0001bf70 0c00002a	cmpi.b	#$2A,d0
0001bf74 662e	bne.s	Obj09_Rblock
0001bf76 4a280036	tst.b	objoff_36(a0)
0001bf7a 660000a4	bne.w	Obj09_NoGlass
0001bf7e 117c001e0036	move.b	#$1E,objoff_36(a0)
0001bf84 08380006f783	btst	#6,(v_ssrotate+1).w
0001bf8a 660e	bne.s	Obj09_DOWNsnd
0001bf8c e0f8f782	asr.w	(v_ssrotate).w
0001bf90 22680032	movea.l	objoff_32(a0),a1
0001bf94 5389	subq.l	#1,a1
0001bf96 12bc0029	move.b	#$29,(a1)
0001bf9a 303c00a9	move.w	#sfx_SSItem,d0
0001bf9e 4ef90000139c	jmp	(QueueSound2).l
0001bfa4 0c00002b	cmpi.b	#$2B,d0
0001bfa8 6630	bne.s	Obj09_ChkGlass
0001bfaa 4a280037	tst.b	objoff_37(a0)
0001bfae 66000070	bne.w	Obj09_NoGlass
0001bfb2 117c001e0037	move.b	#$1E,objoff_37(a0)
0001bfb8 6100f500	bsr.w	SS_RemoveCollectedItem
0001bfbc 660e	bne.s	Obj09_RevStage
0001bfbe 14bc0004	move.b	#4,(a2)
0001bfc2 20280032	move.l	objoff_32(a0),d0
0001bfc6 5380	subq.l	#1,d0
0001bfc8 25400004	move.l	d0,4(a2)
0001bfcc 4478f782	neg.w	(v_ssrotate).w
0001bfd0 303c00a9	move.w	#sfx_SSItem,d0
0001bfd4 4ef90000139c	jmp	(QueueSound2).l
0001bfda 0c00002d	cmpi.b	#$2D,d0
0001bfde 6712	beq.s	Obj09_Glass
0001bfe0 0c00002e	cmpi.b	#$2E,d0
0001bfe4 670c	beq.s	Obj09_Glass
0001bfe6 0c00002f	cmpi.b	#$2F,d0
0001bfea 6706	beq.s	Obj09_Glass
0001bfec 0c000030	cmpi.b	#$30,d0
0001bff0 662e	bne.s	Obj09_NoGlass
0001bff2 6100f4c6	bsr.w	SS_RemoveCollectedItem
0001bff6 661e	bne.s	Obj09_GlassSnd
0001bff8 14bc0006	move.b	#6,(a2)
0001bffc 22680032	movea.l	objoff_32(a0),a1
0001c000 5389	subq.l	#1,a1
0001c002 25490004	move.l	a1,4(a2)
0001c006 1011	move.b	(a1),d0
0001c008 5200	addq.b	#1,d0
0001c00a 0c000030	cmpi.b	#$30,d0
0001c00e 6302	bls.s	Obj09_GlassUpdate
0001c010 4200	clr.b	d0
0001c012 15400004	move.b	d0,4(a2)
0001c016 303c00ba	move.w	#sfx_SSGlass,d0
0001c01a 4ef90000139c	jmp	(QueueSound2).l
0001c020 4e75	rts	
0001c022 4e75	rts	
0001c024 4a78f63a	tst.w	(f_pause).w
0001c028 661a	bne.s	.ispaused
0001c02a 4df900c00000	lea	(vdp_data_port).l,a6
0001c030 610004de	bsr.w	AniArt_GiantRing
0001c034 7000	moveq	#0,d0
0001c036 1038fe10	move.b	(v_zone).w,d0
0001c03a d040	add.w	d0,d0
0001c03c 303b0008	move.w	AniArt_Index(pc,d0.w),d0
0001c040 4efb0004	jmp	AniArt_Index(pc,d0.w)
0001c044 4e75	rts	
0001c054 5338f7b1	subq.b	#1,(v_lani0_time).w
0001c058 6a30	bpl.s	AniArt_GHZ_Bigflower
0001c05a 11fc0005f7b1	move.b	#6-1,(v_lani0_time).w
0001c060 43f900066ad6	lea	(Art_GhzWater).l,a1
0001c066 1038f7b0	move.b	(v_lani0_frame).w,d0
0001c06a 5238f7b0	addq.b	#1,(v_lani0_frame).w
0001c06e 02400001	andi.w	#1,d0
0001c072 6704	beq.s	.isframe0
0001c074 43e90100	lea	.size*tile_size(a1),a1
0001c078 23fc6f00000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Waterfall*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Waterfall*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c082 323c0007	move.w	#.size-1,d1
0001c086 60000330	bra.w	LoadTiles
0001c08a 5338f7b3	subq.b	#1,(v_lani1_time).w
0001c08e 6a30	bpl.s	AniArt_GHZ_Smallflower
0001c090 11fc000ff7b3	move.b	#$10-1,(v_lani1_time).w
0001c096 43f900066cd6	lea	(Art_GhzFlower1).l,a1
0001c09c 1038f7b2	move.b	(v_lani1_frame).w,d0
0001c0a0 5238f7b2	addq.b	#1,(v_lani1_frame).w
0001c0a4 02400001	andi.w	#1,d0
0001c0a8 6704	beq.s	.isframe0
0001c0aa 43e90200	lea	.size*tile_size(a1),a1
0001c0ae 23fc6b80000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Big_Flower_1*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Big_Flower_1*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c0b8 323c000f	move.w	#.size-1,d1
0001c0bc 600002fa	bra.w	LoadTiles
0001c0c0 5338f7b5	subq.b	#1,(v_lani2_time).w
0001c0c4 6a46	bpl.s	.end
0001c0c6 11fc0007f7b5	move.b	#8-1,(v_lani2_time).w
0001c0cc 1038f7b4	move.b	(v_lani2_frame).w,d0
0001c0d0 5238f7b4	addq.b	#1,(v_lani2_frame).w
0001c0d4 02400003	andi.w	#3,d0
0001c0d8 103b0034	move.b	.sequence(pc,d0.w),d0
0001c0dc 08000000	btst	#0,d0
0001c0e0 6606	bne.s	.isframe1
0001c0e2 11fc007ff7b5	move.b	#$7F,(v_lani2_time).w
0001c0e8 ef48	lsl.w	#7,d0
0001c0ea 3200	move.w	d0,d1
0001c0ec d040	add.w	d0,d0
0001c0ee d041	add.w	d1,d0
0001c0f0 23fc6d80000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Small_Flower*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Small_Flower*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c0fa 43f9000670d6	lea	(Art_GhzFlower2).l,a1
0001c100 43f10000	lea	(a1,d0.w),a1
0001c104 323c000b	move.w	#.size-1,d1
0001c108 610002ae	bsr.w	LoadTiles
0001c10c 4e75	rts	
0001c112 5338f7b1	subq.b	#1,(v_lani0_time).w
0001c116 6a38	bpl.s	AniArt_MZ_Magma
0001c118 11fc0013f7b1	move.b	#$14-1,(v_lani0_time).w
0001c11e 43f900067556	lea	(Art_MzLava1).l,a1
0001c124 7000	moveq	#0,d0
0001c126 1038f7b0	move.b	(v_lani0_frame).w,d0
0001c12a 5200	addq.b	#1,d0
0001c12c 0c000003	cmpi.b	#3,d0
0001c130 6602	bne.s	.frame01or2
0001c132 7000	moveq	#0,d0
0001c134 11c0f7b0	move.b	d0,(v_lani0_frame).w
0001c138 c0fc0100	mulu.w	#.size*tile_size,d0
0001c13c d2c0	adda.w	d0,a1
0001c13e 23fc5c40000100c00004	move.l	#($40000000+(((ArtTile_MZ_Animated_Lava*tile_size)&$3FFF)<<16)+(((ArtTile_MZ_Animated_Lava*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c148 323c0007	move.w	#.size-1,d1
0001c14c 6100026a	bsr.w	LoadTiles
0001c150 5338f7b3	subq.b	#1,(v_lani1_time).w
0001c154 6a58	bpl.s	AniArt_MZ_Torch
0001c156 11fc0001f7b3	move.b	#2-1,(v_lani1_time).w
0001c15c 7000	moveq	#0,d0
0001c15e 1038f7b0	move.b	(v_lani0_frame).w,d0
0001c162 49f900067856	lea	(Art_MzLava2).l,a4
0001c168 ee58	ror.w	#7,d0
0001c16a d8c0	adda.w	d0,a4
0001c16c 23fc5a40000100c00004	move.l	#($40000000+(((ArtTile_MZ_Animated_Magma*tile_size)&$3FFF)<<16)+(((ArtTile_MZ_Animated_Magma*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c176 7600	moveq	#0,d3
0001c178 1638f7b2	move.b	(v_lani1_frame).w,d3
0001c17c 5238f7b2	addq.b	#1,(v_lani1_frame).w
0001c180 1638fe68	move.b	(v_oscillate+$A).w,d3
0001c184 343c0003	move.w	#3,d2
0001c188 3003	move.w	d3,d0
0001c18a d040	add.w	d0,d0
0001c18c 0240001e	andi.w	#$1E,d0
0001c190 47f90001c3ce	lea	(AniArt_MZextra).l,a3
0001c196 30330000	move.w	(a3,d0.w),d0
0001c19a 47f30000	lea	(a3,d0.w),a3
0001c19e 224c	movea.l	a4,a1
0001c1a0 323c001f	move.w	#$1F,d1
0001c1a4 4e93	jsr	(a3)
0001c1a6 5843	addq.w	#4,d3
0001c1a8 51caffde	dbf	d2,.loop
0001c1ac 4e75	rts	
0001c1ae 5338f7b5	subq.b	#1,(v_lani2_time).w
0001c1b2 6a000036	bpl.w	.end
0001c1b6 11fc0007f7b5	move.b	#8-1,(v_lani2_time).w
0001c1bc 43f900067e56	lea	(Art_MzTorch).l,a1
0001c1c2 7000	moveq	#0,d0
0001c1c4 1038f7b6	move.b	(v_lani3_frame).w,d0
0001c1c8 5238f7b6	addq.b	#1,(v_lani3_frame).w
0001c1cc 02380003f7b6	andi.b	#3,(v_lani3_frame).w
0001c1d2 c0fc00c0	mulu.w	#.size*tile_size,d0
0001c1d6 d2c0	adda.w	d0,a1
0001c1d8 23fc5e40000100c00004	move.l	#($40000000+(((ArtTile_MZ_Torch*tile_size)&$3FFF)<<16)+(((ArtTile_MZ_Torch*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c1e2 323c0005	move.w	#.size-1,d1
0001c1e6 600001d0	bra.w	LoadTiles
0001c1ea 4e75	rts	
0001c1ec 4a38f7b4	tst.b	(v_lani2_frame).w
0001c1f0 6706	beq.s	.smokepuff
0001c1f2 5338f7b4	subq.b	#1,(v_lani2_frame).w
0001c1f6 6058	bra.s	.chk_smokepuff2
0001c1f8 5338f7b1	subq.b	#1,(v_lani0_time).w
0001c1fc 6a52	bpl.s	.chk_smokepuff2
0001c1fe 11fc0007f7b1	move.b	#8-1,(v_lani0_time).w
0001c204 43f900068156	lea	(Art_SbzSmoke).l,a1
0001c20a 23fc4900000200c00004	move.l	#($40000000+(((ArtTile_SBZ_Smoke_Puff_1*tile_size)&$3FFF)<<16)+(((ArtTile_SBZ_Smoke_Puff_1*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c214 1038f7b0	move.b	(v_lani0_frame).w,d0
0001c218 5238f7b0	addq.b	#1,(v_lani0_frame).w
0001c21c 02400007	andi.w	#7,d0
0001c220 6712	beq.s	.untilnextpuff
0001c222 5340	subq.w	#1,d0
0001c224 c0fc0180	mulu.w	#.size*tile_size,d0
0001c228 43f10000	lea	(a1,d0.w),a1
0001c22c 323c000b	move.w	#.size-1,d1
0001c230 60000186	bra.w	LoadTiles
0001c234 11fc00b4f7b4	move.b	#180,(v_lani2_frame).w
0001c23a 323c0005	move.w	#(.size/2)-1,d1
0001c23e 61000178	bsr.w	LoadTiles
0001c242 43f900068156	lea	(Art_SbzSmoke).l,a1
0001c248 323c0005	move.w	#(.size/2)-1,d1
0001c24c 6000016a	bra.w	LoadTiles
0001c250 4a38f7b5	tst.b	(v_lani2_time).w
0001c254 6706	beq.s	.smokepuff2
0001c256 5338f7b5	subq.b	#1,(v_lani2_time).w
0001c25a 6044	bra.s	.end
0001c25c 5338f7b3	subq.b	#1,(v_lani1_time).w
0001c260 6a3e	bpl.s	.end
0001c262 11fc0007f7b3	move.b	#8-1,(v_lani1_time).w
0001c268 43f900068156	lea	(Art_SbzSmoke).l,a1
0001c26e 23fc4a80000200c00004	move.l	#($40000000+(((ArtTile_SBZ_Smoke_Puff_2*tile_size)&$3FFF)<<16)+(((ArtTile_SBZ_Smoke_Puff_2*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c278 1038f7b2	move.b	(v_lani1_frame).w,d0
0001c27c 5238f7b2	addq.b	#1,(v_lani1_frame).w
0001c280 02400007	andi.w	#7,d0
0001c284 6712	beq.s	.untilnextpuff2
0001c286 5340	subq.w	#1,d0
0001c288 c0fc0180	mulu.w	#.size*tile_size,d0
0001c28c 43f10000	lea	(a1,d0.w),a1
0001c290 323c000b	move.w	#.size-1,d1
0001c294 60000122	bra.w	LoadTiles
0001c298 11fc0078f7b5	move.b	#120,(v_lani2_time).w
0001c29e 609a	bra.s	.clearsky
0001c2a0 4e75	rts	
0001c2a2 5338f7b3	subq.b	#1,(v_lani1_time).w
0001c2a6 6a4c	bpl.s	AniArt_Ending_SmallFlower
0001c2a8 11fc0007f7b3	move.b	#8-1,(v_lani1_time).w
0001c2ae 43f900066cd6	lea	(Art_GhzFlower1).l,a1
0001c2b4 45f89400	lea	(v_256x256_def+$4A*chunk_size).w,a2
0001c2b8 1038f7b2	move.b	(v_lani1_frame).w,d0
0001c2bc 5238f7b2	addq.b	#1,(v_lani1_frame).w
0001c2c0 02400001	andi.w	#1,d0
0001c2c4 6708	beq.s	.isframe0
0001c2c6 43e90200	lea	.size*tile_size(a1),a1
0001c2ca 45ea0200	lea	.size*tile_size(a2),a2
0001c2ce 23fc6b80000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Big_Flower_1*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Big_Flower_1*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c2d8 323c000f	move.w	#.size-1,d1
0001c2dc 610000da	bsr.w	LoadTiles
0001c2e0 224a	movea.l	a2,a1
0001c2e2 23fc7200000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Big_Flower_2*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Big_Flower_2*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c2ec 323c000f	move.w	#.size-1,d1
0001c2f0 600000c6	bra.w	LoadTiles
0001c2f4 5338f7b5	subq.b	#1,(v_lani2_time).w
0001c2f8 6a42	bpl.s	AniArt_Ending_Flower3
0001c2fa 11fc0007f7b5	move.b	#8-1,(v_lani2_time).w
0001c300 1038f7b4	move.b	(v_lani2_frame).w,d0
0001c304 5238f7b4	addq.b	#1,(v_lani2_frame).w
0001c308 02400007	andi.w	#7,d0
0001c30c 103b0026	move.b	.sequence(pc,d0.w),d0
0001c310 ef48	lsl.w	#7,d0
0001c312 3200	move.w	d0,d1
0001c314 d040	add.w	d0,d0
0001c316 d041	add.w	d1,d0
0001c318 23fc6d80000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Small_Flower*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Small_Flower*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c322 43f9000670d6	lea	(Art_GhzFlower2).l,a1
0001c328 43f10000	lea	(a1,d0.w),a1
0001c32c 323c000b	move.w	#.size-1,d1
0001c330 60000086	bra.w	LoadTiles
0001c33c 5338f7b9	subq.b	#1,(v_lani4_time).w
0001c340 6a38	bpl.s	AniArt_Ending_Flower4
0001c342 11fc000ef7b9	move.b	#$F-1,(v_lani4_time).w
0001c348 1038f7b8	move.b	(v_lani4_frame).w,d0
0001c34c 5238f7b8	addq.b	#1,(v_lani4_frame).w
0001c350 02400003	andi.w	#3,d0
0001c354 103b0020	move.b	AniArt_Ending_Flower3_sequence(pc,d0.w),d0
0001c358 e148	lsl.w	#8,d0
0001c35a d040	add.w	d0,d0
0001c35c 23fc7000000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Flower_3*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Flower_3*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c366 43f89800	lea	(v_256x256_def+$4C*chunk_size).w,a1
0001c36a 43f10000	lea	(a1,d0.w),a1
0001c36e 323c000f	move.w	#.size-1,d1
0001c372 60000044	bra.w	LoadTiles
0001c37a 5338f7bb	subq.b	#1,(v_lani5_time).w
0001c37e 6a34	bpl.s	.end
0001c380 11fc000bf7bb	move.b	#$C-1,(v_lani5_time).w
0001c386 1038f7ba	move.b	(v_lani5_frame).w,d0
0001c38a 5238f7ba	addq.b	#1,(v_lani5_frame).w
0001c38e 02400003	andi.w	#3,d0
0001c392 103b00e2	move.b	AniArt_Ending_Flower3_sequence(pc,d0.w),d0
0001c396 e148	lsl.w	#8,d0
0001c398 d040	add.w	d0,d0
0001c39a 23fc6800000100c00004	move.l	#($40000000+(((ArtTile_GHZ_Flower_4*tile_size)&$3FFF)<<16)+(((ArtTile_GHZ_Flower_4*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c3a4 43f89e00	lea	(v_256x256_def+$4F*chunk_size).w,a1
0001c3a8 43f10000	lea	(a1,d0.w),a1
0001c3ac 323c000f	move.w	#.size-1,d1
0001c3b0 60000006	bra.w	LoadTiles
0001c3b4 4e75	rts	
0001c3b6 4e75	rts	
0001c3b8 2c99	move.l	(a1)+,(a6)
0001c3ba 2c99	move.l	(a1)+,(a6)
0001c3bc 2c99	move.l	(a1)+,(a6)
0001c3be 2c99	move.l	(a1)+,(a6)
0001c3c0 2c99	move.l	(a1)+,(a6)
0001c3c2 2c99	move.l	(a1)+,(a6)
0001c3c4 2c99	move.l	(a1)+,(a6)
0001c3c6 2c99	move.l	(a1)+,(a6)
0001c3c8 51c9ffee	dbf	d1,LoadTiles
0001c3cc 4e75	rts	
0001c3ee 2c91	move.l	(a1),(a6)
0001c3f0 43e90010	lea	$10(a1),a1
0001c3f4 51c9fff8	dbf	d1,AniArt_MZ_Magma_Shift0_Col0
0001c3f8 4e75	rts	
0001c3fa 20290002	move.l	2(a1),d0
0001c3fe 10290001	move.b	1(a1),d0
0001c402 e098	ror.l	#8,d0
0001c404 2c80	move.l	d0,(a6)
0001c406 43e90010	lea	$10(a1),a1
0001c40a 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift1_Col0
0001c40e 4e75	rts	
0001c410 2ca90002	move.l	2(a1),(a6)
0001c414 43e90010	lea	$10(a1),a1
0001c418 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift2_Col0
0001c41c 4e75	rts	
0001c41e 20290004	move.l	4(a1),d0
0001c422 10290003	move.b	3(a1),d0
0001c426 e098	ror.l	#8,d0
0001c428 2c80	move.l	d0,(a6)
0001c42a 43e90010	lea	$10(a1),a1
0001c42e 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift3_Col0
0001c432 4e75	rts	
0001c434 2ca90004	move.l	4(a1),(a6)
0001c438 43e90010	lea	$10(a1),a1
0001c43c 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift0_Col1
0001c440 4e75	rts	
0001c442 20290006	move.l	6(a1),d0
0001c446 10290005	move.b	5(a1),d0
0001c44a e098	ror.l	#8,d0
0001c44c 2c80	move.l	d0,(a6)
0001c44e 43e90010	lea	$10(a1),a1
0001c452 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift1_Col1
0001c456 4e75	rts	
0001c458 2ca90006	move.l	6(a1),(a6)
0001c45c 43e90010	lea	$10(a1),a1
0001c460 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift2_Col1
0001c464 4e75	rts	
0001c466 20290008	move.l	8(a1),d0
0001c46a 10290007	move.b	7(a1),d0
0001c46e e098	ror.l	#8,d0
0001c470 2c80	move.l	d0,(a6)
0001c472 43e90010	lea	$10(a1),a1
0001c476 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift3_Col1
0001c47a 4e75	rts	
0001c47c 2ca90008	move.l	8(a1),(a6)
0001c480 43e90010	lea	$10(a1),a1
0001c484 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift0_Col2
0001c488 4e75	rts	
0001c48a 2029000a	move.l	$A(a1),d0
0001c48e 10290009	move.b	9(a1),d0
0001c492 e098	ror.l	#8,d0
0001c494 2c80	move.l	d0,(a6)
0001c496 43e90010	lea	$10(a1),a1
0001c49a 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift1_Col2
0001c49e 4e75	rts	
0001c4a0 2ca9000a	move.l	$A(a1),(a6)
0001c4a4 43e90010	lea	$10(a1),a1
0001c4a8 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift2_Col2
0001c4ac 4e75	rts	
0001c4ae 2029000c	move.l	$C(a1),d0
0001c4b2 1029000b	move.b	$B(a1),d0
0001c4b6 e098	ror.l	#8,d0
0001c4b8 2c80	move.l	d0,(a6)
0001c4ba 43e90010	lea	$10(a1),a1
0001c4be 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift3_Col2
0001c4c2 4e75	rts	
0001c4c4 2ca9000c	move.l	$C(a1),(a6)
0001c4c8 43e90010	lea	$10(a1),a1
0001c4cc 51c9fff6	dbf	d1,AniArt_MZ_Magma_Shift0_Col3
0001c4d0 4e75	rts	
0001c4d2 2029000c	move.l	$C(a1),d0
0001c4d6 e198	rol.l	#8,d0
0001c4dc 2c80	move.l	d0,(a6)
0001c4de 43e90010	lea	$10(a1),a1
0001c4e2 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift1_Col3
0001c4e6 4e75	rts	
0001c4e8 3ca9000e	move.w	$E(a1),(a6)
0001c4f0 43e90010	lea	$10(a1),a1
0001c4f4 51c9fff2	dbf	d1,AniArt_MZ_Magma_Shift2_Col3
0001c4f8 4e75	rts	
0001c4fe 1029000f	move.b	$F(a1),d0
0001c502 e098	ror.l	#8,d0
0001c504 2c80	move.l	d0,(a6)
0001c506 43e90010	lea	$10(a1),a1
0001c50a 51c9ffee	dbf	d1,AniArt_MZ_Magma_Shift3_Col3
0001c50e 4e75	rts	
0001c510 4a78f7be	tst.w	(v_gfxbigring).w
0001c514 6602	bne.s	.loadTiles
0001c516 4e75	rts	
0001c518 047801c0f7be	subi.w	#.size*tile_size,(v_gfxbigring).w
0001c51e 43f90006a324	lea	(Art_BigRing).l,a1
0001c524 7000	moveq	#0,d0
0001c526 3038f7be	move.w	(v_gfxbigring).w,d0
0001c52a 43f10000	lea	(a1,d0.w),a1
0001c52e 06408000	addi.w	#ArtTile_Giant_Ring*tile_size,d0
0001c532 e588	lsl.l	#2,d0
0001c534 e448	lsr.w	#2,d0
0001c536 00404000	ori.w	#$4000,d0
0001c53a 4840	swap	d0
0001c53c 2d400004	move.l	d0,4(a6)
0001c540 323c000d	move.w	#.size-1,d1
0001c544 6000fe72	bra.w	LoadTiles
0001c548 7000	moveq	#0,d0
0001c54a 10280024	move.b	obRoutine(a0),d0
0001c54e 323b0006	move.w	HUD_Index(pc,d0.w),d1
0001c552 4efb1002	jmp	HUD_Index(pc,d1.w)
0001c55a 54280024	addq.b	#2,obRoutine(a0)
0001c55e 317c00900008	move.w	#$90,obX(a0)
0001c564 317c0108000a	move.w	#$108,obScreenY(a0)
0001c56a 217c0001c5b40004	move.l	#Map_HUD,obMap(a0)
0001c572 317c06ca0002	move.w	#ArtTile_HUD,obGfx(a0)
0001c578 117c00000001	move.b	#0,obRender(a0)
0001c57e 117c00000018	move.b	#0,obPriority(a0)
0001c584 4a78fe20	tst.w	(v_rings).w
0001c588 670a	beq.s	.norings
0001c58a 4228001a	clr.b	obFrame(a0)
0001c58e 4ef90000d604	jmp	(DisplaySprite).l
0001c594 7000	moveq	#0,d0
0001c596 08380003fe05	btst	#3,(v_framebyte).w
0001c59c 660c	bne.s	.display
0001c59e 5240	addq.w	#1,d0
0001c5a0 0c380009fe23	cmpi.b	#9,(v_timemin).w
0001c5a6 6602	bne.s	.display
0001c5a8 5440	addq.w	#2,d0
0001c5aa 1140001a	move.b	d0,obFrame(a0)
0001c5ae 4ef90000d604	jmp	(DisplaySprite).l
0001c68c 11fc0001fe1f	move.b	#1,(f_scorecount).w
0001c692 45f8ffc0	lea	(v_scorecopy).w,a2
0001c696 47f8fe26	lea	(v_score).w,a3
0001c69a d193	add.l	d0,(a3)
0001c69c 223c000f423f	move.l	#999999,d1
0001c6a2 b293	cmp.l	(a3),d1
0001c6a4 62000006	bhi.w	.belowmax
0001c6a8 2681	move.l	d1,(a3)
0001c6aa 2481	move.l	d1,(a2)
0001c6ac 2013	move.l	(a3),d0
0001c6ae b092	cmp.l	(a2),d0
0001c6b0 65000004	blo.w	.return
0001c6b4 2480	move.l	d0,(a2)
0001c6b6 4e75	rts	
0001c6b8 4a78fffa	tst.w	(f_debugmode).w
0001c6bc 660000e4	bne.w	HudDebug
0001c6c0 4a38fe1f	tst.b	(f_scorecount).w
0001c6c4 6712	beq.s	.chkrings
0001c6c6 4238fe1f	clr.b	(f_scorecount).w
0001c6ca 203c5c800003	move.l	#($40000000+((((ArtTile_HUD+$1A)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$1A)*tile_size)&$C000)>>14)),d0
0001c6d0 2238fe26	move.l	(v_score).w,d1
0001c6d4 61000204	bsr.w	Hud_Score
0001c6d8 4a38fe1d	tst.b	(f_ringcount).w
0001c6dc 671a	beq.s	.chktime
0001c6de 6a04	bpl.s	.notzero
0001c6e0 6100012c	bsr.w	Hud_LoadZero
0001c6e4 4238fe1d	clr.b	(f_ringcount).w
0001c6e8 203c5f400003	move.l	#($40000000+((((ArtTile_HUD+$30)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$30)*tile_size)&$C000)>>14)),d0
0001c6ee 7200	moveq	#0,d1
0001c6f0 3238fe20	move.w	(v_rings).w,d1
0001c6f4 610001da	bsr.w	Hud_Rings
0001c6f8 4a38fe1e	tst.b	(f_timecount).w
0001c6fc 6756	beq.s	.chklives
0001c6fe 4a78f63a	tst.w	(f_pause).w
0001c702 6650	bne.s	.chklives
0001c704 43f8fe22	lea	(v_time).w,a1
0001c708 0c9900093b3b	cmpi.l	#(9*$10000)+(59*$100)+59,(a1)+
0001c70e 677c	beq.s	TimeOver
0001c710 5221	addq.b	#1,-(a1)
0001c712 0c11003c	cmpi.b	#60,(a1)
0001c716 653c	blo.s	.chklives
0001c718 12bc0000	move.b	#0,(a1)
0001c71c 5221	addq.b	#1,-(a1)
0001c71e 0c11003c	cmpi.b	#60,(a1)
0001c722 6510	blo.s	.updatetime
0001c724 12bc0000	move.b	#0,(a1)
0001c728 5221	addq.b	#1,-(a1)
0001c72a 0c110009	cmpi.b	#9,(a1)
0001c72e 6504	blo.s	.updatetime
0001c730 12bc0009	move.b	#9,(a1)
0001c734 203c5e400003	move.l	#($40000000+((((ArtTile_HUD+$28)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$28)*tile_size)&$C000)>>14)),d0
0001c73a 7200	moveq	#0,d1
0001c73c 1238fe23	move.b	(v_timemin).w,d1
0001c740 61000266	bsr.w	Hud_Mins
0001c744 203c5ec00003	move.l	#($40000000+((((ArtTile_HUD+$2C)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$2C)*tile_size)&$C000)>>14)),d0
0001c74a 7200	moveq	#0,d1
0001c74c 1238fe24	move.b	(v_timesec).w,d1
0001c750 61000260	bsr.w	Hud_Secs
0001c754 4a38fe1c	tst.b	(f_lifecount).w
0001c758 6708	beq.s	.chkbonus
0001c75a 4238fe1c	clr.b	(f_lifecount).w
0001c75e 6100030e	bsr.w	Hud_Lives
0001c762 4a38f7d6	tst.b	(f_endactbonus).w
0001c766 6722	beq.s	.finish
0001c768 4238f7d6	clr.b	(f_endactbonus).w
0001c76c 23fc6e00000200c00004	move.l	#($40000000+(((ArtTile_Bonuses*tile_size)&$3FFF)<<16)+(((ArtTile_Bonuses*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c776 7200	moveq	#0,d1
0001c778 3238f7d2	move.w	(v_timebonus).w,d1
0001c77c 6100028e	bsr.w	Hud_TimeRingBonus
0001c780 7200	moveq	#0,d1
0001c782 3238f7d4	move.w	(v_ringbonus).w,d1
0001c786 61000284	bsr.w	Hud_TimeRingBonus
0001c78a 4e75	rts	
0001c78c 4238fe1e	clr.b	(f_timecount).w
0001c790 41f8d000	lea	(v_player).w,a0
0001c794 2448	movea.l	a0,a2
0001c796 6100e900	bsr.w	KillSonic
0001c79a 11fc0001fe1a	move.b	#1,(f_timeover).w
0001c7a0 4e75	rts	
0001c7a2 610000d6	bsr.w	HudDb_XY
0001c7a6 4a38fe1d	tst.b	(f_ringcount).w
0001c7aa 671a	beq.s	.objcounter
0001c7ac 6a04	bpl.s	.notzero
0001c7ae 6100005e	bsr.w	Hud_LoadZero
0001c7b2 4238fe1d	clr.b	(f_ringcount).w
0001c7b6 203c5f400003	move.l	#($40000000+((((ArtTile_HUD+$30)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$30)*tile_size)&$C000)>>14)),d0
0001c7bc 7200	moveq	#0,d1
0001c7be 3238fe20	move.w	(v_rings).w,d1
0001c7c2 6100010c	bsr.w	Hud_Rings
0001c7c6 203c5ec00003	move.l	#($40000000+((((ArtTile_HUD+$2C)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$2C)*tile_size)&$C000)>>14)),d0
0001c7cc 7200	moveq	#0,d1
0001c7ce 1238f62c	move.b	(v_spritecount).w,d1
0001c7d2 610001de	bsr.w	Hud_Secs
0001c7d6 4a38fe1c	tst.b	(f_lifecount).w
0001c7da 6708	beq.s	.chkbonus
0001c7dc 4238fe1c	clr.b	(f_lifecount).w
0001c7e0 6100028c	bsr.w	Hud_Lives
0001c7e4 4a38f7d6	tst.b	(f_endactbonus).w
0001c7e8 6722	beq.s	.finish
0001c7ea 4238f7d6	clr.b	(f_endactbonus).w
0001c7ee 23fc6e00000200c00004	move.l	#($40000000+(((ArtTile_Bonuses*tile_size)&$3FFF)<<16)+(((ArtTile_Bonuses*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c7f8 7200	moveq	#0,d1
0001c7fa 3238f7d2	move.w	(v_timebonus).w,d1
0001c7fe 6100020c	bsr.w	Hud_TimeRingBonus
0001c802 7200	moveq	#0,d1
0001c804 3238f7d4	move.w	(v_ringbonus).w,d1
0001c808 61000202	bsr.w	Hud_TimeRingBonus
0001c80c 4e75	rts	
0001c80e 23fc5f40000300c00004	move.l	#($40000000+((((ArtTile_HUD+$30)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$30)*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c818 45fa005c	lea	Hud_TilesZero(pc),a2
0001c81c 343c0002	move.w	#2,d2
0001c820 601c	bra.s	loc_1C83E
0001c822 4df900c00000	lea	(vdp_data_port).l,a6
0001c828 61000244	bsr.w	Hud_Lives
0001c82c 23fc5c40000300c00004	move.l	#($40000000+((((ArtTile_HUD+$18)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$18)*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c836 45fa0032	lea	Hud_TilesBase(pc),a2
0001c83a 343c000e	move.w	#$E,d2
0001c83e 43fa029a	lea	Art_Hud(pc),a1
0001c842 323c000f	move.w	#$F,d1
0001c846 101a	move.b	(a2)+,d0
0001c848 6b14	bmi.s	loc_1C85E
0001c84a 4880	ext.w	d0
0001c84c eb48	lsl.w	#5,d0
0001c84e 47f10000	lea	(a1,d0.w),a3
0001c852 2c9b	move.l	(a3)+,(a6)
0001c854 51c9fffc	dbf	d1,loc_1C852
0001c858 51caffe8	dbf	d2,loc_1C842
0001c85c 4e75	rts	
0001c85e 2cbc00000000	move.l	#0,(a6)
0001c864 51c9fff8	dbf	d1,loc_1C85E
0001c868 60ee	bra.s	loc_1C858
0001c87a 23fc5c40000300c00004	move.l	#($40000000+((((ArtTile_HUD+$18)*tile_size)&$3FFF)<<16)+((((ArtTile_HUD+$18)*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c884 3238f700	move.w	(v_screenposx).w,d1
0001c888 4841	swap	d1
0001c88a 3238d008	move.w	(v_player+obX).w,d1
0001c88e 610a	bsr.s	HudDb_XY2
0001c890 3238f704	move.w	(v_screenposy).w,d1
0001c894 4841	swap	d1
0001c896 3238d00c	move.w	(v_player+obY).w,d1
0001c89a 7c07	moveq	#7,d6
0001c89c 43f9000005f0	lea	(Art_Text).l,a1
0001c8a2 e959	rol.w	#4,d1
0001c8a4 3401	move.w	d1,d2
0001c8a6 0242000f	andi.w	#$F,d2
0001c8aa 0c42000a	cmpi.w	#$A,d2
0001c8ae 6502	blo.s	loc_1C8B2
0001c8b0 5e42	addq.w	#7,d2
0001c8b2 eb4a	lsl.w	#5,d2
0001c8b4 47f12000	lea	(a1,d2.w),a3
0001c8b8 2c9b	move.l	(a3)+,(a6)
0001c8ba 2c9b	move.l	(a3)+,(a6)
0001c8bc 2c9b	move.l	(a3)+,(a6)
0001c8be 2c9b	move.l	(a3)+,(a6)
0001c8c0 2c9b	move.l	(a3)+,(a6)
0001c8c2 2c9b	move.l	(a3)+,(a6)
0001c8c4 2c9b	move.l	(a3)+,(a6)
0001c8c6 2c9b	move.l	(a3)+,(a6)
0001c8c8 4841	swap	d1
0001c8ca 51ceffd6	dbf	d6,HudDb_XYLoop
0001c8ce 4e75	rts	
0001c8d0 45f90001c99c	lea	(Hud_100).l,a2
0001c8d6 7c02	moveq	#2,d6
0001c8d8 6008	bra.s	Hud_LoadArt
0001c8da 45f90001c990	lea	(Hud_100000).l,a2
0001c8e0 7c05	moveq	#5,d6
0001c8e2 7800	moveq	#0,d4
0001c8e4 43fa01f4	lea	Art_Hud(pc),a1
0001c8e8 7400	moveq	#0,d2
0001c8ea 261a	move.l	(a2)+,d3
0001c8ec 9283	sub.l	d3,d1
0001c8ee 6504	bcs.s	loc_1C8F4
0001c8f0 5242	addq.w	#1,d2
0001c8f2 60f8	bra.s	loc_1C8EC
0001c8f4 d283	add.l	d3,d1
0001c8f6 4a42	tst.w	d2
0001c8f8 6704	beq.s	loc_1C8FE
0001c8fa 383c0001	move.w	#1,d4
0001c8fe 4a44	tst.w	d4
0001c900 672a	beq.s	loc_1C92C
0001c902 ed4a	lsl.w	#6,d2
0001c904 2d400004	move.l	d0,4(a6)
0001c908 47f12000	lea	(a1,d2.w),a3
0001c90c 2c9b	move.l	(a3)+,(a6)
0001c90e 2c9b	move.l	(a3)+,(a6)
0001c910 2c9b	move.l	(a3)+,(a6)
0001c912 2c9b	move.l	(a3)+,(a6)
0001c914 2c9b	move.l	(a3)+,(a6)
0001c916 2c9b	move.l	(a3)+,(a6)
0001c918 2c9b	move.l	(a3)+,(a6)
0001c91a 2c9b	move.l	(a3)+,(a6)
0001c91c 2c9b	move.l	(a3)+,(a6)
0001c91e 2c9b	move.l	(a3)+,(a6)
0001c920 2c9b	move.l	(a3)+,(a6)
0001c922 2c9b	move.l	(a3)+,(a6)
0001c924 2c9b	move.l	(a3)+,(a6)
0001c926 2c9b	move.l	(a3)+,(a6)
0001c928 2c9b	move.l	(a3)+,(a6)
0001c92a 2c9b	move.l	(a3)+,(a6)
0001c92c 068000400000	addi.l	#$400000,d0
0001c932 51ceffb4	dbf	d6,Hud_ScoreLoop
0001c936 4e75	rts	
0001c938 23fc5f80000300c00004	move.l	#($40000000+(((ArtTile_Continue_Number*tile_size)&$3FFF)<<16)+(((ArtTile_Continue_Number*tile_size)&$C000)>>14)),(vdp_control_port).l
0001c942 4df900c00000	lea	(vdp_data_port).l,a6
0001c948 45f90001c9a0	lea	(Hud_10).l,a2
0001c94e 7c01	moveq	#2-1,d6
0001c950 7800	moveq	#0,d4
0001c952 43fa0186	lea	Art_Hud(pc),a1
0001c956 7400	moveq	#0,d2
0001c958 261a	move.l	(a2)+,d3
0001c95a 9283	sub.l	d3,d1
0001c95c 6504	blo.s	loc_1C962
0001c95e 5242	addq.w	#1,d2
0001c960 60f8	bra.s	loc_1C95A
0001c962 d283	add.l	d3,d1
0001c964 ed4a	lsl.w	#6,d2
0001c966 47f12000	lea	(a1,d2.w),a3
0001c96a 2c9b	move.l	(a3)+,(a6)
0001c96c 2c9b	move.l	(a3)+,(a6)
0001c96e 2c9b	move.l	(a3)+,(a6)
0001c970 2c9b	move.l	(a3)+,(a6)
0001c972 2c9b	move.l	(a3)+,(a6)
0001c974 2c9b	move.l	(a3)+,(a6)
0001c976 2c9b	move.l	(a3)+,(a6)
0001c978 2c9b	move.l	(a3)+,(a6)
0001c97a 2c9b	move.l	(a3)+,(a6)
0001c97c 2c9b	move.l	(a3)+,(a6)
0001c97e 2c9b	move.l	(a3)+,(a6)
0001c980 2c9b	move.l	(a3)+,(a6)
0001c982 2c9b	move.l	(a3)+,(a6)
0001c984 2c9b	move.l	(a3)+,(a6)
0001c986 2c9b	move.l	(a3)+,(a6)
0001c988 2c9b	move.l	(a3)+,(a6)
0001c98a 51ceffca	dbf	d6,ContScr_Loop
0001c98e 4e75	rts	
0001c9a8 45f90001c9a4	lea	(Hud_1).l,a2
0001c9ae 7c00	moveq	#0,d6
0001c9b0 6008	bra.s	Hud_DrawDigits
0001c9b2 45f90001c9a0	lea	(Hud_10).l,a2
0001c9b8 7c01	moveq	#1,d6
0001c9ba 7800	moveq	#0,d4
0001c9bc 43fa011c	lea	Art_Hud(pc),a1
0001c9c0 7400	moveq	#0,d2
0001c9c2 261a	move.l	(a2)+,d3
0001c9c4 9283	sub.l	d3,d1
0001c9c6 6504	bcs.s	loc_1C9CC
0001c9c8 5242	addq.w	#1,d2
0001c9ca 60f8	bra.s	loc_1C9C4
0001c9cc d283	add.l	d3,d1
0001c9ce 4a42	tst.w	d2
0001c9d0 6704	beq.s	loc_1C9D6
0001c9d2 383c0001	move.w	#1,d4
0001c9d6 ed4a	lsl.w	#6,d2
0001c9d8 2d400004	move.l	d0,4(a6)
0001c9dc 47f12000	lea	(a1,d2.w),a3
0001c9e0 2c9b	move.l	(a3)+,(a6)
0001c9e2 2c9b	move.l	(a3)+,(a6)
0001c9e4 2c9b	move.l	(a3)+,(a6)
0001c9e6 2c9b	move.l	(a3)+,(a6)
0001c9e8 2c9b	move.l	(a3)+,(a6)
0001c9ea 2c9b	move.l	(a3)+,(a6)
0001c9ec 2c9b	move.l	(a3)+,(a6)
0001c9ee 2c9b	move.l	(a3)+,(a6)
0001c9f0 2c9b	move.l	(a3)+,(a6)
0001c9f2 2c9b	move.l	(a3)+,(a6)
0001c9f4 2c9b	move.l	(a3)+,(a6)
0001c9f6 2c9b	move.l	(a3)+,(a6)
0001c9f8 2c9b	move.l	(a3)+,(a6)
0001c9fa 2c9b	move.l	(a3)+,(a6)
0001c9fc 2c9b	move.l	(a3)+,(a6)
0001c9fe 2c9b	move.l	(a3)+,(a6)
0001ca00 068000400000	addi.l	#$400000,d0
0001ca06 51ceffb8	dbf	d6,Hud_TimeLoop
0001ca0a 4e75	rts	
0001ca0c 45f90001c998	lea	(Hud_1000).l,a2
0001ca12 7c03	moveq	#3,d6
0001ca14 7800	moveq	#0,d4
0001ca16 43fa00c2	lea	Art_Hud(pc),a1
0001ca1a 7400	moveq	#0,d2
0001ca1c 261a	move.l	(a2)+,d3
0001ca1e 9283	sub.l	d3,d1
0001ca20 6504	bcs.s	loc_1CA26
0001ca22 5242	addq.w	#1,d2
0001ca24 60f8	bra.s	loc_1CA1E
0001ca26 d283	add.l	d3,d1
0001ca28 4a42	tst.w	d2
0001ca2a 6704	beq.s	loc_1CA30
0001ca2c 383c0001	move.w	#1,d4
0001ca30 4a44	tst.w	d4
0001ca32 672c	beq.s	Hud_ClrBonus
0001ca34 ed4a	lsl.w	#6,d2
0001ca36 47f12000	lea	(a1,d2.w),a3
0001ca3a 2c9b	move.l	(a3)+,(a6)
0001ca3c 2c9b	move.l	(a3)+,(a6)
0001ca3e 2c9b	move.l	(a3)+,(a6)
0001ca40 2c9b	move.l	(a3)+,(a6)
0001ca42 2c9b	move.l	(a3)+,(a6)
0001ca44 2c9b	move.l	(a3)+,(a6)
0001ca46 2c9b	move.l	(a3)+,(a6)
0001ca48 2c9b	move.l	(a3)+,(a6)
0001ca4a 2c9b	move.l	(a3)+,(a6)
0001ca4c 2c9b	move.l	(a3)+,(a6)
0001ca4e 2c9b	move.l	(a3)+,(a6)
0001ca50 2c9b	move.l	(a3)+,(a6)
0001ca52 2c9b	move.l	(a3)+,(a6)
0001ca54 2c9b	move.l	(a3)+,(a6)
0001ca56 2c9b	move.l	(a3)+,(a6)
0001ca58 2c9b	move.l	(a3)+,(a6)
0001ca5a 51ceffbe	dbf	d6,Hud_BonusLoop
0001ca5e 4e75	rts	
0001ca60 7a0f	moveq	#$F,d5
0001ca62 2cbc00000000	move.l	#0,(a6)
0001ca68 51cdfff8	dbf	d5,Hud_ClrBonusLoop
0001ca6c 60ec	bra.s	loc_1CA5A
0001ca6e 203c7ba00003	move.l	#($40000000+((((ArtTile_Lives_Counter+9)*tile_size)&$3FFF)<<16)+((((ArtTile_Lives_Counter+9)*tile_size)&$C000)>>14)),d0
0001ca74 7200	moveq	#0,d1
0001ca76 1238fe12	move.b	(v_lives).w,d1
0001ca7a 45f90001c9a0	lea	(Hud_10).l,a2
0001ca80 7c01	moveq	#1,d6
0001ca82 7800	moveq	#0,d4
0001ca84 43fa0354	lea	Art_LivesNums(pc),a1
0001ca88 2d400004	move.l	d0,4(a6)
0001ca8c 7400	moveq	#0,d2
0001ca8e 261a	move.l	(a2)+,d3
0001ca90 9283	sub.l	d3,d1
0001ca92 6504	bcs.s	loc_1CA98
0001ca94 5242	addq.w	#1,d2
0001ca96 60f8	bra.s	loc_1CA90
0001ca98 d283	add.l	d3,d1
0001ca9a 4a42	tst.w	d2
0001ca9c 6704	beq.s	loc_1CAA2
0001ca9e 383c0001	move.w	#1,d4
0001caa2 4a44	tst.w	d4
0001caa4 6722	beq.s	Hud_ClrLives
0001caa6 eb4a	lsl.w	#5,d2
0001caa8 47f12000	lea	(a1,d2.w),a3
0001caac 2c9b	move.l	(a3)+,(a6)
0001caae 2c9b	move.l	(a3)+,(a6)
0001cab0 2c9b	move.l	(a3)+,(a6)
0001cab2 2c9b	move.l	(a3)+,(a6)
0001cab4 2c9b	move.l	(a3)+,(a6)
0001cab6 2c9b	move.l	(a3)+,(a6)
0001cab8 2c9b	move.l	(a3)+,(a6)
0001caba 2c9b	move.l	(a3)+,(a6)
0001cabc 068000400000	addi.l	#$400000,d0
0001cac2 51ceffc4	dbf	d6,Hud_LivesLoop
0001cac6 4e75	rts	
0001cac8 4a46	tst.w	d6
0001caca 67da	beq.s	loc_1CAA6
0001cacc 7a07	moveq	#7,d5
0001cace 2cbc00000000	move.l	#0,(a6)
0001cad4 51cdfff8	dbf	d5,Hud_ClrLivesLoop
0001cad8 60e2	bra.s	loc_1CABC
0001cf1a 7000	moveq	#0,d0
0001cf1c 1038fe08	move.b	(v_debuguse).w,d0
0001cf20 323b0006	move.w	Debug_Index(pc,d0.w),d1
0001cf24 4efb1002	jmp	Debug_Index(pc,d1.w)
0001cf2c 5438fe08	addq.b	#2,(v_debuguse).w
0001cf30 31f8f72cfef0	move.w	(v_limittop2).w,(v_limittopdb).w
0001cf36 31f8f726fef2	move.w	(v_limitbtm1).w,(v_limitbtmdb).w
0001cf3c 31fc0000f72c	move.w	#0,(v_limittop2).w
0001cf42 31fc0720f726	move.w	#$720,(v_limitbtm1).w
0001cf48 027807ffd00c	andi.w	#$7FF,(v_player+obY).w
0001cf4e 027807fff704	andi.w	#$7FF,(v_screenposy).w
0001cf54 027803fff70c	andi.w	#$3FF,(v_bgscreenposy).w
0001cf5a 117c0000001a	move.b	#0,obFrame(a0)
0001cf60 117c0000001c	move.b	#id_Walk,obAnim(a0)
0001cf66 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
0001cf6c 6610	bne.s	.islevel
0001cf6e 31fc0000f782	move.w	#0,(v_ssrotate).w
0001cf74 31fc0000f780	move.w	#0,(v_ssangle).w
0001cf7a 7006	moveq	#6,d0
0001cf7c 6006	bra.s	.selectlist
0001cf7e 7000	moveq	#0,d0
0001cf80 1038fe10	move.b	(v_zone).w,d0
0001cf84 45f90001d16e	lea	(DebugList).l,a2
0001cf8a d040	add.w	d0,d0
0001cf8c d4f20000	adda.w	(a2,d0.w),a2
0001cf90 3c1a	move.w	(a2)+,d6
0001cf92 bc38fe06	cmp.b	(v_debugitem).w,d6
0001cf96 6206	bhi.s	.noreset
0001cf98 11fc0000fe06	move.b	#0,(v_debugitem).w
0001cf9e 610001b2	bsr.w	Debug_ShowItem
0001cfa2 11fc000cfe0a	move.b	#12,(v_debugspeedtimer).w
0001cfa8 11fc0001fe0b	move.b	#1,(v_debugspeed).w
0001cfae 7006	moveq	#6,d0
0001cfb0 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
0001cfb6 6706	beq.s	.isntlevel
0001cfb8 7000	moveq	#0,d0
0001cfba 1038fe10	move.b	(v_zone).w,d0
0001cfbe 45f90001d16e	lea	(DebugList).l,a2
0001cfc4 d040	add.w	d0,d0
0001cfc6 d4f20000	adda.w	(a2,d0.w),a2
0001cfca 3c1a	move.w	(a2)+,d6
0001cfcc 61000008	bsr.w	Debug_Control
0001cfd0 4ef90000d604	jmp	(DisplaySprite).l
0001cfd6 7800	moveq	#0,d4
0001cfd8 323c0001	move.w	#1,d1
0001cfdc 1838f605	move.b	(v_jpadpress1).w,d4
0001cfe0 0244000f	andi.w	#btnDir,d4
0001cfe4 6632	bne.s	.dirpressed
0001cfe6 1038f604	move.b	(v_jpadhold1).w,d0
0001cfea 0240000f	andi.w	#btnDir,d0
0001cfee 6610	bne.s	.dirheld
0001cff0 11fc000cfe0a	move.b	#12,(v_debugspeedtimer).w
0001cff6 11fc000ffe0b	move.b	#15,(v_debugspeed).w
0001cffc 60000070	bra.w	Debug_ChgItem
0001d000 5338fe0a	subq.b	#1,(v_debugspeedtimer).w
0001d004 6616	bne.s	loc_1D01C
0001d006 11fc0001fe0a	move.b	#1,(v_debugspeedtimer).w
0001d00c 5238fe0b	addq.b	#1,(v_debugspeed).w
0001d010 6606	bne.s	.dirpressed
0001d012 11fc00fffe0b	move.b	#-1,(v_debugspeed).w
0001d018 1838f604	move.b	(v_jpadhold1).w,d4
0001d01c 7200	moveq	#0,d1
0001d01e 1238fe0b	move.b	(v_debugspeed).w,d1
0001d022 5241	addq.w	#1,d1
0001d024 4841	swap	d1
0001d026 e881	asr.l	#4,d1
0001d028 2428000c	move.l	obY(a0),d2
0001d02c 26280008	move.l	obX(a0),d3
0001d030 08040000	btst	#bitUp,d4
0001d034 6706	beq.s	loc_1D03C
0001d036 9481	sub.l	d1,d2
0001d038 6402	bcc.s	loc_1D03C
0001d03a 7400	moveq	#0,d2
0001d03c 08040001	btst	#bitDn,d4
0001d040 6710	beq.s	loc_1D052
0001d042 d481	add.l	d1,d2
0001d044 0c8207ff0000	cmpi.l	#$7FF0000,d2
0001d04a 6506	blo.s	loc_1D052
0001d04c 243c07ff0000	move.l	#$7FF0000,d2
0001d052 08040002	btst	#bitL,d4
0001d056 6706	beq.s	loc_1D05E
0001d058 9681	sub.l	d1,d3
0001d05a 6402	bcc.s	loc_1D05E
0001d05c 7600	moveq	#0,d3
0001d05e 08040003	btst	#bitR,d4
0001d062 6702	beq.s	loc_1D066
0001d064 d681	add.l	d1,d3
0001d066 2142000c	move.l	d2,obY(a0)
0001d06a 21430008	move.l	d3,obX(a0)
0001d06e 08380006f604	btst	#bitA,(v_jpadhold1).w
0001d074 6730	beq.s	.createitem
0001d076 08380005f605	btst	#bitC,(v_jpadpress1).w
0001d07c 670c	beq.s	.nextitem
0001d07e 5338fe06	subq.b	#1,(v_debugitem).w
0001d082 641e	bcc.s	.display
0001d084 dd38fe06	add.b	d6,(v_debugitem).w
0001d088 6018	bra.s	.display
0001d08a 08380006f605	btst	#bitA,(v_jpadpress1).w
0001d090 6714	beq.s	.createitem
0001d092 5238fe06	addq.b	#1,(v_debugitem).w
0001d096 bc38fe06	cmp.b	(v_debugitem).w,d6
0001d09a 6206	bhi.s	.display
0001d09c 11fc0000fe06	move.b	#0,(v_debugitem).w
0001d0a2 600000ae	bra.w	Debug_ShowItem
0001d0a6 08380005f605	btst	#bitC,(v_jpadpress1).w
0001d0ac 673c	beq.s	.backtonormal
0001d0ae 4eb90000da8c	jsr	(FindFreeObj).l
0001d0b4 6634	bne.s	.backtonormal
0001d0b6 336800080008	move.w	obX(a0),obX(a1)
0001d0bc 3368000c000c	move.w	obY(a0),obY(a1)
0001d0c8 136800010001	move.b	obRender(a0),obRender(a1)
0001d0ce 136800010022	move.b	obRender(a0),obStatus(a1)
0001d0d4 0229007f0022	andi.b	#$7F,obStatus(a1)
0001d0da 7000	moveq	#0,d0
0001d0dc 1038fe06	move.b	(v_debugitem).w,d0
0001d0e0 e748	lsl.w	#3,d0
0001d0e2 137200040028	move.b	4(a2,d0.w),obSubtype(a1)
0001d0e8 4e75	rts	
0001d0ea 08380004f605	btst	#bitB,(v_jpadpress1).w
0001d0f0 675e	beq.s	.stayindebug
0001d0f2 7000	moveq	#0,d0
0001d0f4 31c0fe08	move.w	d0,(v_debuguse).w
0001d0f8 21fc000211e2d004	move.l	#Map_Sonic,(v_player+obMap).w
0001d100 31fc0780d002	move.w	#ArtTile_Sonic,(v_player+obGfx).w
0001d106 11c0d01c	move.b	d0,(v_player+obAnim).w
0001d10a 3140000a	move.w	d0,obX+2(a0)
0001d10e 3140000e	move.w	d0,obY+2(a0)
0001d112 31f8fef0f72c	move.w	(v_limittopdb).w,(v_limittop2).w
0001d118 31f8fef2f726	move.w	(v_limitbtmdb).w,(v_limitbtm1).w
0001d11e 0c380010f600	cmpi.b	#id_Special,(v_gamemode).w
0001d124 662a	bne.s	.stayindebug
0001d126 4278f780	clr.w	(v_ssangle).w
0001d12a 31fc0040f782	move.w	#$40,(v_ssrotate).w
0001d130 21fc000211e2d004	move.l	#Map_Sonic,(v_player+obMap).w
0001d138 31fc0780d002	move.w	#ArtTile_Sonic,(v_player+obGfx).w
0001d13e 11fc0002d01c	move.b	#id_Roll,(v_player+obAnim).w
0001d144 08f80002d022	bset	#2,(v_player+obStatus).w
0001d14a 08f80001d022	bset	#1,(v_player+obStatus).w
0001d150 4e75	rts	
0001d152 7000	moveq	#0,d0
0001d154 1038fe06	move.b	(v_debugitem).w,d0
0001d158 e748	lsl.w	#3,d0
0001d15a 217200000004	move.l	(a2,d0.w),obMap(a0)
0001d160 317200060002	move.w	6(a2,d0.w),obGfx(a0)
0001d166 11720005001a	move.b	5(a2,d0.w),obFrame(a0)
0001d16c 4e75	rts	
00071b4c 33fc010000a11100	move.w	#$100,(z80_bus_request).l
00071b54 4e71	nop	
00071b56 4e71	nop	
00071b58 4e71	nop	
00071b5a 0839000000a11100	btst	#0,(z80_bus_request).l
00071b62 66f6	bne.s	.updateloop
00071b64 0839000700a01ffd	btst	#7,(z80_ram+zDAC_Status).l
00071b6c 6714	beq.s	.driverinput
00071b6e 33fc000000a11100	move.w	#0,(z80_bus_request).l
00071b76 4e71	nop	
00071b78 4e71	nop	
00071b7a 4e71	nop	
00071b7c 4e71	nop	
00071b7e 4e71	nop	
00071b80 60ca	bra.s	UpdateMusic
00071b82 4df900fff000	lea	(v_snddriver_ram&$FFFFFF).l,a6
00071b88 422e000e	clr.b	SMPS_RAM.f_voice_selector(a6)
00071b8c 4a2e0003	tst.b	SMPS_RAM.f_pausemusic(a6)
00071b90 660002be	bne.w	PauseMusic
00071b94 532e0001	subq.b	#1,SMPS_RAM.v_main_tempo_timeout(a6)
00071b98 6604	bne.s	.skipdelay
00071b9a 4eba0a70	jsr	TempoWait(pc)
00071b9e 102e0004	move.b	SMPS_RAM.v_fadeout_counter(a6),d0
00071ba2 6704	beq.s	.skipfadeout
00071ba4 4eba095e	jsr	DoFadeOut(pc)
00071ba8 4a2e0024	tst.b	SMPS_RAM.f_fadein_flag(a6)
00071bac 6704	beq.s	.skipfadein
00071bae 4eba0acc	jsr	DoFadeIn(pc)
00071bb2 4a6e000a	tst.w	SMPS_RAM.v_soundqueue0(a6)
00071bb6 6704	beq.s	.nosndinput
00071bb8 4eba0348	jsr	CycleSoundQueue(pc)
00071bbc 0c2e00800009	cmpi.b	#$80,SMPS_RAM.v_sound_id(a6)
00071bc2 6704	beq.s	.nonewsound
00071bc4 4eba0386	jsr	PlaySoundID(pc)
00071bc8 4bee0040	lea	SMPS_RAM.v_music_dac_track(a6),a5
00071bcc 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071bce 6a04	bpl.s	.dacdone
00071bd0 4eba007c	jsr	DACUpdateTrack(pc)
00071bd4 422e0008	clr.b	SMPS_RAM.f_updating_dac(a6)
00071bd8 7e05	moveq	#SMPS_MUSIC_FM_TRACK_COUNT-1,d7
00071bda dafc0030	adda.w	#SMPS_Track.len,a5
00071bde 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071be0 6a04	bpl.s	.bgmfmnext
00071be2 4eba00e6	jsr	FMUpdateTrack(pc)
00071be6 51cffff2	dbf	d7,.bgmfmloop
00071bea 7e02	moveq	#SMPS_MUSIC_PSG_TRACK_COUNT-1,d7
00071bec dafc0030	adda.w	#SMPS_Track.len,a5
00071bf0 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071bf2 6a04	bpl.s	.bgmpsgnext
00071bf4 4eba0c5a	jsr	PSGUpdateTrack(pc)
00071bf8 51cffff2	dbf	d7,.bgmpsgloop
00071bfc 1d7c0080000e	move.b	#$80,SMPS_RAM.f_voice_selector(a6)
00071c02 7e02	moveq	#SMPS_SFX_FM_TRACK_COUNT-1,d7
00071c04 dafc0030	adda.w	#SMPS_Track.len,a5
00071c08 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071c0a 6a04	bpl.s	.sfxfmnext
00071c0c 4eba00bc	jsr	FMUpdateTrack(pc)
00071c10 51cffff2	dbf	d7,.sfxfmloop
00071c14 7e02	moveq	#SMPS_SFX_PSG_TRACK_COUNT-1,d7
00071c16 dafc0030	adda.w	#SMPS_Track.len,a5
00071c1a 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071c1c 6a04	bpl.s	.sfxpsgnext
00071c1e 4eba0c30	jsr	PSGUpdateTrack(pc)
00071c22 51cffff2	dbf	d7,.sfxpsgloop
00071c26 1d7c0040000e	move.b	#$40,SMPS_RAM.f_voice_selector(a6)
00071c2c dafc0030	adda.w	#SMPS_Track.len,a5
00071c30 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071c32 6a04	bpl.s	.specfmdone
00071c34 4eba0094	jsr	FMUpdateTrack(pc)
00071c38 dafc0030	adda.w	#SMPS_Track.len,a5
00071c3c 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00071c3e 6a04	bpl.s	DoStartZ80
00071c40 4eba0c0e	jsr	PSGUpdateTrack(pc)
00071c44 33fc000000a11100	move.w	#0,(z80_bus_request).l
00071c4c 4e75	rts	
00071c4e 532d000e	subq.b	#1,SMPS_Track.DurationTimeout(a5)
00071c52 6656	bne.s	.locret
00071c54 1d7c00800008	move.b	#$80,SMPS_RAM.f_updating_dac(a6)
00071c5a 286d0004	movea.l	SMPS_Track.DataPointer(a5),a4
00071c5e 7a00	moveq	#0,d5
00071c60 1a1c	move.b	(a4)+,d5
00071c62 0c0500e0	cmpi.b	#$E0,d5
00071c66 6506	blo.s	.notcoord
00071c68 4eba0df0	jsr	CoordFlag(pc)
00071c6c 60f0	bra.s	.sampleloop
00071c6e 4a05	tst.b	d5
00071c70 6a12	bpl.s	.gotduration
00071c72 1b450010	move.b	d5,SMPS_Track.SavedDAC(a5)
00071c76 1a1c	move.b	(a4)+,d5
00071c78 6a0a	bpl.s	.gotduration
00071c7a 534c	subq.w	#1,a4
00071c7c 1b6d000f000e	move.b	SMPS_Track.SavedDuration(a5),SMPS_Track.DurationTimeout(a5)
00071c82 6004	bra.s	.gotsampleduration
00071c84 4eba00ba	jsr	SetDuration(pc)
00071c88 2b4c0004	move.l	a4,SMPS_Track.DataPointer(a5)
00071c8c 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00071c90 6618	bne.s	.locret
00071c92 7000	moveq	#0,d0
00071c94 102d0010	move.b	SMPS_Track.SavedDAC(a5),d0
00071c98 0c000080	cmpi.b	#$80,d0
00071c9c 670c	beq.s	.locret
00071c9e 08000003	btst	#3,d0
00071ca2 6608	bne.s	.timpani
00071ca4 13c000a01fff	move.b	d0,(z80_ram+zDAC_Sample).l
00071caa 4e75	rts	
00071cac 04000088	subi.b	#$88,d0
00071cb0 103b0012	move.b	DAC_sample_rate(pc,d0.w),d0
00071cb4 13c000a000ea	move.b	d0,(z80_ram+zTimpani_Pitch).l
00071cba 13fc008300a01fff	move.b	#$83,(z80_ram+zDAC_Sample).l
00071cc2 4e75	rts	
00071cca 532d000e	subq.b	#1,SMPS_Track.DurationTimeout(a5)
00071cce 6610	bne.s	.notegoing
00071cd0 08950004	bclr	#4,SMPS_Track.PlaybackControl(a5)
00071cd4 4eba0016	jsr	FMDoNext(pc)
00071cd8 4eba013e	jsr	FMPrepareNote(pc)
00071cdc 60000a04	bra.w	FMNoteOn
00071ce0 4eba00bc	jsr	NoteTimeoutUpdate(pc)
00071ce4 4eba00e0	jsr	DoModulation(pc)
00071ce8 6000013a	bra.w	FMUpdateFreq
00071cec 286d0004	movea.l	SMPS_Track.DataPointer(a5),a4
00071cf0 08950001	bclr	#1,SMPS_Track.PlaybackControl(a5)
00071cf4 7a00	moveq	#0,d5
00071cf6 1a1c	move.b	(a4)+,d5
00071cf8 0c0500e0	cmpi.b	#$E0,d5
00071cfc 6506	blo.s	.gotnote
00071cfe 4eba0d5a	jsr	CoordFlag(pc)
00071d02 60f0	bra.s	.noteloop
00071d04 4eba09f8	jsr	FMNoteOff(pc)
00071d08 4a05	tst.b	d5
00071d0a 6a0e	bpl.s	.gotduration
00071d0c 4eba0014	jsr	FMSetFreq(pc)
00071d10 1a1c	move.b	(a4)+,d5
00071d12 6a06	bpl.s	.gotduration
00071d14 534c	subq.w	#1,a4
00071d16 60000048	bra.w	FinishTrackUpdate
00071d1a 4eba0024	jsr	SetDuration(pc)
00071d1e 60000040	bra.w	FinishTrackUpdate
00071d22 04050080	subi.b	#$80,d5
00071d26 6730	beq.s	TrackSetRest
00071d28 da2d0008	add.b	SMPS_Track.Transpose(a5),d5
00071d2c 0245007f	andi.w	#$7F,d5
00071d30 e34d	lsl.w	#1,d5
00071d32 41fa0a5c	lea	FMFrequencies(pc),a0
00071d36 3c305000	move.w	(a0,d5.w),d6
00071d3a 3b460010	move.w	d6,SMPS_Track.Freq(a5)
00071d3e 4e75	rts	
00071d40 1005	move.b	d5,d0
00071d42 122d0002	move.b	SMPS_Track.TempoDivider(a5),d1
00071d46 5301	subq.b	#1,d1
00071d48 6704	beq.s	.donemult
00071d4a d005	add.b	d5,d0
00071d4c 60f8	bra.s	.multloop
00071d4e 1b40000f	move.b	d0,SMPS_Track.SavedDuration(a5)
00071d52 1b40000e	move.b	d0,SMPS_Track.DurationTimeout(a5)
00071d56 4e75	rts	
00071d58 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00071d5c 426d0010	clr.w	SMPS_Track.Freq(a5)
00071d60 2b4c0004	move.l	a4,SMPS_Track.DataPointer(a5)
00071d64 1b6d000f000e	move.b	SMPS_Track.SavedDuration(a5),SMPS_Track.DurationTimeout(a5)
00071d6a 08150004	btst	#4,SMPS_Track.PlaybackControl(a5)
00071d6e 662c	bne.s	.locret
00071d70 1b6d00130012	move.b	SMPS_Track.NoteTimeoutMaster(a5),SMPS_Track.NoteTimeout(a5)
00071d76 422d000c	clr.b	SMPS_Track.VolEnvIndex(a5)
00071d7a 08150003	btst	#3,SMPS_Track.PlaybackControl(a5)
00071d7e 671c	beq.s	.locret
00071d80 206d0014	movea.l	SMPS_Track.ModulationPtr(a5),a0
00071d84 1b580018	move.b	(a0)+,SMPS_Track.ModulationWait(a5)
00071d88 1b580019	move.b	(a0)+,SMPS_Track.ModulationSpeed(a5)
00071d8c 1b58001a	move.b	(a0)+,SMPS_Track.ModulationDelta(a5)
00071d90 1018	move.b	(a0)+,d0
00071d92 e208	lsr.b	#1,d0
00071d94 1b40001b	move.b	d0,SMPS_Track.ModulationSteps(a5)
00071d98 426d001c	clr.w	SMPS_Track.ModulationVal(a5)
00071d9c 4e75	rts	
00071d9e 4a2d0012	tst.b	SMPS_Track.NoteTimeout(a5)
00071da2 6720	beq.s	.locret
00071da4 532d0012	subq.b	#1,SMPS_Track.NoteTimeout(a5)
00071da8 661a	bne.s	.locret
00071daa 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00071dae 4a2d0001	tst.b	SMPS_Track.VoiceControl(a5)
00071db2 6b00000a	bmi.w	.psgnoteoff
00071db6 4eba0946	jsr	FMNoteOff(pc)
00071dba 584f	addq.w	#4,sp
00071dbc 4e75	rts	
00071dbe 4eba0be0	jsr	PSGNoteOff(pc)
00071dc2 584f	addq.w	#4,sp
00071dc4 4e75	rts	
00071dc6 584f	addq.w	#4,sp
00071dc8 08150003	btst	#3,SMPS_Track.PlaybackControl(a5)
00071dcc 6748	beq.s	.locret
00071dce 4a2d0018	tst.b	SMPS_Track.ModulationWait(a5)
00071dd2 6706	beq.s	.waitdone
00071dd4 532d0018	subq.b	#1,SMPS_Track.ModulationWait(a5)
00071dd8 4e75	rts	
00071dda 532d0019	subq.b	#1,SMPS_Track.ModulationSpeed(a5)
00071dde 6702	beq.s	.updatemodulation
00071de0 4e75	rts	
00071de2 206d0014	movea.l	SMPS_Track.ModulationPtr(a5),a0
00071de6 1b6800010019	move.b	1(a0),SMPS_Track.ModulationSpeed(a5)
00071dec 4a2d001b	tst.b	SMPS_Track.ModulationSteps(a5)
00071df0 660c	bne.s	.calcfreq
00071df2 1b680003001b	move.b	3(a0),SMPS_Track.ModulationSteps(a5)
00071df8 442d001a	neg.b	SMPS_Track.ModulationDelta(a5)
00071dfc 4e75	rts	
00071dfe 532d001b	subq.b	#1,SMPS_Track.ModulationSteps(a5)
00071e02 1c2d001a	move.b	SMPS_Track.ModulationDelta(a5),d6
00071e06 4886	ext.w	d6
00071e08 dc6d001c	add.w	SMPS_Track.ModulationVal(a5),d6
00071e0c 3b46001c	move.w	d6,SMPS_Track.ModulationVal(a5)
00071e10 dc6d0010	add.w	SMPS_Track.Freq(a5),d6
00071e14 594f	subq.w	#4,sp
00071e16 4e75	rts	
00071e18 08150001	btst	#1,SMPS_Track.PlaybackControl(a5)
00071e1c 662a	bne.s	locret_71E48
00071e1e 3c2d0010	move.w	SMPS_Track.Freq(a5),d6
00071e22 6726	beq.s	FMSetRest
00071e24 102d001e	move.b	SMPS_Track.Detune(a5),d0
00071e28 4880	ext.w	d0
00071e2a dc40	add.w	d0,d6
00071e2c 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00071e30 6616	bne.s	locret_71E48
00071e32 3206	move.w	d6,d1
00071e34 e049	lsr.w	#8,d1
00071e36 103c00a4	move.b	#$A4,d0
00071e3a 4eba08e6	jsr	WriteFMIorII(pc)
00071e3e 1206	move.b	d6,d1
00071e40 103c00a0	move.b	#$A0,d0
00071e44 4eba08dc	jsr	WriteFMIorII(pc)
00071e48 4e75	rts	
00071e4a 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00071e4e 4e75	rts	
00071e50 6b42	bmi.s	.unpausemusic
00071e52 0c2e00020003	cmpi.b	#2,SMPS_RAM.f_pausemusic(a6)
00071e58 670000a4	beq.w	.unpausedallfm
00071e5c 1d7c00020003	move.b	#2,SMPS_RAM.f_pausemusic(a6)
00071e62 7602	moveq	#2,d3
00071e64 103c00b4	move.b	#$B4,d0
00071e68 7200	moveq	#0,d1
00071e6a 4eba08c2	jsr	WriteFMI(pc)
00071e6e 4eba08f4	jsr	WriteFMII(pc)
00071e72 5200	addq.b	#1,d0
00071e74 51cbfff4	dbf	d3,.killpanloop
00071e78 7602	moveq	#2,d3
00071e7a 7028	moveq	#$28,d0
00071e7c 1203	move.b	d3,d1
00071e7e 4eba08ae	jsr	WriteFMI(pc)
00071e82 5801	addq.b	#4,d1
00071e84 4eba08a8	jsr	WriteFMI(pc)
00071e88 51cbfff2	dbf	d3,.noteoffloop
00071e8c 4eba0b28	jsr	PSGSilenceAll(pc)
00071e90 6000fdb2	bra.w	DoStartZ80
00071e94 422e0003	clr.b	SMPS_RAM.f_pausemusic(a6)
00071e98 7630	moveq	#SMPS_Track.len,d3
00071e9a 4bee0040	lea	SMPS_RAM.v_music_fmdac_tracks(a6),a5
00071e9e 7806	moveq	#SMPS_MUSIC_FM_DAC_TRACK_COUNT-1,d4
00071ea0 08150007	btst	#7,SMPS_Track.PlaybackControl(a5)
00071ea4 6712	beq.s	.bgmfmnext
00071ea6 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00071eaa 660c	bne.s	.bgmfmnext
00071eac 103c00b4	move.b	#$B4,d0
00071eb0 122d000a	move.b	SMPS_Track.AMSFMSPan(a5),d1
00071eb4 4eba086c	jsr	WriteFMIorII(pc)
00071eb8 dac3	adda.w	d3,a5
00071eba 51ccffe4	dbf	d4,.bgmfmloop
00071ebe 4bee0220	lea	SMPS_RAM.v_sfx_fm_tracks(a6),a5
00071ec2 7802	moveq	#SMPS_SFX_FM_TRACK_COUNT-1,d4
00071ec4 08150007	btst	#7,SMPS_Track.PlaybackControl(a5)
00071ec8 6712	beq.s	.sfxfmnext
00071eca 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00071ece 660c	bne.s	.sfxfmnext
00071ed0 103c00b4	move.b	#$B4,d0
00071ed4 122d000a	move.b	SMPS_Track.AMSFMSPan(a5),d1
00071ed8 4eba0848	jsr	WriteFMIorII(pc)
00071edc dac3	adda.w	d3,a5
00071ede 51ccffe4	dbf	d4,.sfxfmloop
00071ee2 4bee0340	lea	SMPS_RAM.v_spcsfx_track_ram(a6),a5
00071ee6 08150007	btst	#7,SMPS_Track.PlaybackControl(a5)
00071eea 6712	beq.s	.unpausedallfm
00071eec 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00071ef0 660c	bne.s	.unpausedallfm
00071ef2 103c00b4	move.b	#$B4,d0
00071ef6 122d000a	move.b	SMPS_Track.AMSFMSPan(a5),d1
00071efa 4eba0826	jsr	WriteFMIorII(pc)
00071efe 6000fd44	bra.w	DoStartZ80
00071f02 207900071990	movea.l	(Go_SoundPriorities).l,a0
00071f08 43ee000a	lea	SMPS_RAM.v_soundqueue0(a6),a1
00071f10 7802	moveq	#SMPS_RAM.v_soundqueue_end-SMPS_RAM.v_soundqueue_start-1,d4
00071f12 1011	move.b	(a1),d0
00071f14 1200	move.b	d0,d1
00071f16 4219	clr.b	(a1)+
00071f18 04000081	subi.b	#bgm__First,d0
00071f1c 6520	bcs.s	.nextinput
00071f1e 0c2e00800009	cmpi.b	#$80,SMPS_RAM.v_sound_id(a6)
00071f24 6706	beq.s	.havesound
00071f26 1d41000a	move.b	d1,SMPS_RAM.v_soundqueue0(a6)
00071f2a 6012	bra.s	.nextinput
00071f2c 0240007f	andi.w	#$7F,d0
00071f30 14300000	move.b	(a0,d0.w),d2
00071f34 b403	cmp.b	d3,d2
00071f36 6506	blo.s	.nextinput
00071f38 1602	move.b	d2,d3
00071f3a 1d410009	move.b	d1,SMPS_RAM.v_sound_id(a6)
00071f3e 51ccffd2	dbf	d4,.inputloop
00071f42 4a03	tst.b	d3
00071f44 6b04	bmi.s	.locret
00071f4a 4e75	rts	
00071f4c 7e00	moveq	#0,d7
00071f4e 1e2e0009	move.b	SMPS_RAM.v_sound_id(a6),d7
00071f52 6700064a	beq.w	StopAllSound
00071f56 6a34	bpl.s	.locret
00071f58 1d7c00800009	move.b	#$80,SMPS_RAM.v_sound_id(a6)
00071f5e 0c07009f	cmpi.b	#bgm__Last+$C,d7
00071f62 6300006e	bls.w	Sound_PlayBGM
00071f66 0c0700a0	cmpi.b	#sfx__First,d7
00071f6a 65000020	blo.w	.locret
00071f6e 0c0700cf	cmpi.b	#sfx__Last,d7
00071f72 63000252	bls.w	Sound_PlaySFX
00071f76 0c0700d0	cmpi.b	#spec__First,d7
00071f7a 65000010	blo.w	.locret
00071f7e 0c0700e0	cmpi.b	#spec__Last+$10,d7
00071f82 65000388	blo.w	Sound_PlaySpecial
00071f86 0c0700e4	cmpi.b	#flg__Last,d7
00071f8a 6302	bls.s	Sound_E0toE4
00071f8c 4e75	rts	
00071f8e 040700e0	subi.b	#flg__First,d7
00071f92 e54f	lsl.w	#2,d7
00071f94 4efb7002	jmp	Sound_ExIndex(pc,d7.w)
00071f98 6000054c	bra.w	FadeOutMusic
00071f9c 6000000e	bra.w	PlaySegaSound
00071fa0 60000682	bra.w	SpeedUpMusic
00071fa4 600006ac	bra.w	SlowDownMusic
00071fa8 600005f4	bra.w	StopAllSound
00071fac 13fc008800a01fff	move.b	#$88,(z80_ram+zDAC_Sample).l
00071fb4 33fc000000a11100	move.w	#0,(z80_bus_request).l
00071fbc 323c0011	move.w	#$11,d1
00071fc0 303cffff	move.w	#-1,d0
00071fc4 4e71	nop	
00071fc6 51c8fffc	dbf	d0,.busyloop
00071fca 51c9fff4	dbf	d1,.busyloop_outer
00071fce 584f	addq.w	#4,sp
00071fd0 4e75	rts	
00071fd2 0c070088	cmpi.b	#bgm_ExtraLife,d7
00071fd6 664c	bne.s	.bgmnot1up
00071fd8 4a2e0027	tst.b	SMPS_RAM.f_1up_playing(a6)
00071fdc 660001d8	bne.w	.locdblret
00071fe0 4bee0040	lea	SMPS_RAM.v_music_track_ram(a6),a5
00071fe4 7009	moveq	#SMPS_MUSIC_TRACK_COUNT-1,d0
00071fe6 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
00071fea dafc0030	adda.w	#SMPS_Track.len,a5
00071fee 51c8fff6	dbf	d0,.clearsfxloop
00071ff2 4bee0220	lea	SMPS_RAM.v_sfx_track_ram(a6),a5
00071ff6 7005	moveq	#SMPS_SFX_TRACK_COUNT-1,d0
00071ff8 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00071ffc dafc0030	adda.w	#SMPS_Track.len,a5
00072000 51c8fff6	dbf	d0,.cleartrackplayloop
00072008 204e	movea.l	a6,a0
0007200a 43ee03a0	lea	SMPS_RAM.v_1up_ram_copy(a6),a1
0007200e 303c0087	move.w	#((SMPS_RAM.v_1up_ram_end-SMPS_RAM.v_1up_ram)/4)-1,d0
00072012 22d8	move.l	(a0)+,(a1)+
00072014 51c8fffc	dbf	d0,.backupramloop
00072018 1d7c00800027	move.b	#$80,SMPS_RAM.f_1up_playing(a6)
00072022 6008	bra.s	.bgm_loadMusic
00072024 422e0027	clr.b	SMPS_RAM.f_1up_playing(a6)
00072028 422e0026	clr.b	SMPS_RAM.v_fadein_counter(a6)
0007202c 4eba059c	jsr	InitMusicPlayback(pc)
00072030 2879000719a0	movea.l	(Go_SpeedUpIndex).l,a4
00072036 04070081	subi.b	#bgm__First,d7
0007203a 1d7470000029	move.b	(a4,d7.w),SMPS_RAM.v_speeduptempo(a6)
00072040 287900071998	movea.l	(Go_MusicIndex).l,a4
00072046 e54f	lsl.w	#2,d7
00072048 28747000	movea.l	(a4,d7.w),a4
0007204c 7000	moveq	#0,d0
0007204e 3014	move.w	(a4),d0
00072050 d08c	add.l	a4,d0
00072052 2d400018	move.l	d0,SMPS_RAM.v_voice_ptr(a6)
00072056 102c0005	move.b	5(a4),d0
0007205a 1d400028	move.b	d0,SMPS_RAM.v_tempo_mod(a6)
0007205e 4a2e002a	tst.b	SMPS_RAM.f_speedup(a6)
00072062 6704	beq.s	.nospeedshoes
00072064 102e0029	move.b	SMPS_RAM.v_speeduptempo(a6),d0
00072068 1d400002	move.b	d0,SMPS_RAM.v_main_tempo(a6)
0007206c 1d400001	move.b	d0,SMPS_RAM.v_main_tempo_timeout(a6)
00072070 7200	moveq	#0,d1
00072072 264c	movea.l	a4,a3
00072074 5c4c	addq.w	#6,a4
00072076 7e00	moveq	#0,d7
00072078 1e2b0002	move.b	2(a3),d7
0007207c 67000096	beq.w	.bgm_fmdone
00072080 5307	subq.b	#1,d7
00072082 123c00c0	move.b	#$C0,d1
00072086 182b0004	move.b	4(a3),d4
0007208a 7c30	moveq	#SMPS_Track.len,d6
0007208c 1a3c0001	move.b	#1,d5
00072090 43ee0040	lea	SMPS_RAM.v_music_fmdac_tracks(a6),a1
00072094 45fa0124	lea	FMDACInitBytes(pc),a2
00072098 08d10007	bset	#7,SMPS_Track.PlaybackControl(a1)
0007209c 135a0001	move.b	(a2)+,SMPS_Track.VoiceControl(a1)
000720a0 13440002	move.b	d4,SMPS_Track.TempoDivider(a1)
000720a4 1346000d	move.b	d6,SMPS_Track.StackPointer(a1)
000720a8 1341000a	move.b	d1,SMPS_Track.AMSFMSPan(a1)
000720ac 1345000e	move.b	d5,SMPS_Track.DurationTimeout(a1)
000720b0 7000	moveq	#0,d0
000720b2 301c	move.w	(a4)+,d0
000720b4 d08b	add.l	a3,d0
000720b6 23400004	move.l	d0,SMPS_Track.DataPointer(a1)
000720ba 335c0008	move.w	(a4)+,SMPS_Track.Transpose(a1)
000720be d2c6	adda.w	d6,a1
000720c0 51cfffd6	dbf	d7,.bgm_fmloadloop
000720c4 0c2b00070002	cmpi.b	#7,2(a3)
000720ca 660c	bne.s	.silencefm6
000720cc 702b	moveq	#$2B,d0
000720ce 7200	moveq	#0,d1
000720d0 4eba065c	jsr	WriteFMI(pc)
000720d4 6000003e	bra.w	.bgm_fmdone
000720d8 7028	moveq	#$28,d0
000720da 7206	moveq	#6,d1
000720dc 4eba0650	jsr	WriteFMI(pc)
000720e0 103c0042	move.b	#$42,d0
000720e4 727f	moveq	#$7F,d1
000720e6 4eba067c	jsr	WriteFMII(pc)
000720ea 103c004a	move.b	#$4A,d0
000720ee 727f	moveq	#$7F,d1
000720f0 4eba0672	jsr	WriteFMII(pc)
000720f4 103c0046	move.b	#$46,d0
000720f8 727f	moveq	#$7F,d1
000720fa 4eba0668	jsr	WriteFMII(pc)
000720fe 103c004e	move.b	#$4E,d0
00072102 727f	moveq	#$7F,d1
00072104 4eba065e	jsr	WriteFMII(pc)
00072108 103c00b6	move.b	#$B6,d0
0007210c 123c00c0	move.b	#$C0,d1
00072110 4eba0652	jsr	WriteFMII(pc)
00072114 7e00	moveq	#0,d7
00072116 1e2b0003	move.b	3(a3),d7
0007211a 6738	beq.s	.bgm_psgdone
0007211c 5307	subq.b	#1,d7
0007211e 43ee0190	lea	SMPS_RAM.v_music_psg_tracks(a6),a1
00072122 45fa009e	lea	PSGInitBytes(pc),a2
00072126 08d10007	bset	#7,SMPS_Track.PlaybackControl(a1)
0007212a 135a0001	move.b	(a2)+,SMPS_Track.VoiceControl(a1)
0007212e 13440002	move.b	d4,SMPS_Track.TempoDivider(a1)
00072132 1346000d	move.b	d6,SMPS_Track.StackPointer(a1)
00072136 1345000e	move.b	d5,SMPS_Track.DurationTimeout(a1)
0007213a 7000	moveq	#0,d0
0007213c 301c	move.w	(a4)+,d0
0007213e d08b	add.l	a3,d0
00072140 23400004	move.l	d0,SMPS_Track.DataPointer(a1)
00072144 335c0008	move.w	(a4)+,SMPS_Track.Transpose(a1)
00072148 101c	move.b	(a4)+,d0
0007214a 135c000b	move.b	(a4)+,SMPS_Track.VoiceIndex(a1)
0007214e d2c6	adda.w	d6,a1
00072150 51cfffd4	dbf	d7,.bgm_psgloadloop
00072154 43ee0220	lea	SMPS_RAM.v_sfx_track_ram(a6),a1
00072158 7e05	moveq	#SMPS_SFX_TRACK_COUNT-1,d7
0007215a 4a11	tst.b	SMPS_Track.PlaybackControl(a1)
0007215c 6a00001e	bpl.w	.sfxnext
00072160 7000	moveq	#0,d0
00072162 10290001	move.b	SMPS_Track.VoiceControl(a1),d0
00072166 6b06	bmi.s	.sfxpsgchannel
00072168 5500	subq.b	#2,d0
0007216a e508	lsl.b	#2,d0
0007216c 6002	bra.s	.gotchannelindex
0007216e e608	lsr.b	#3,d0
00072170 41fa015a	lea	SFX_BGMChannelRAM(pc),a0
00072174 20700000	movea.l	(a0,d0.w),a0
00072178 08d00002	bset	#2,SMPS_Track.PlaybackControl(a0)
0007217c d2c6	adda.w	d6,a1
0007217e 51cfffda	dbf	d7,.sfxstoploop
00072182 4a6e0340	tst.w	SMPS_RAM.v_spcsfx_fm4_track.PlaybackControl(a6)
00072186 6a06	bpl.s	.checkspecialpsg
00072188 08ee00020100	bset	#2,SMPS_RAM.v_music_fm4_track.PlaybackControl(a6)
0007218e 4a6e0370	tst.w	SMPS_RAM.v_spcsfx_psg3_track.PlaybackControl(a6)
00072192 6a06	bpl.s	.sendfmnoteoff
00072194 08ee000201f0	bset	#2,SMPS_RAM.v_music_psg3_track.PlaybackControl(a6)
0007219a 4bee0070	lea	SMPS_RAM.v_music_fm_tracks(a6),a5
0007219e 7805	moveq	#SMPS_MUSIC_FM_TRACK_COUNT-1,d4
000721a0 4eba055c	jsr	FMNoteOff(pc)
000721a4 dac6	adda.w	d6,a5
000721a6 51ccfff8	dbf	d4,.fmnoteoffloop
000721aa 7802	moveq	#SMPS_MUSIC_PSG_TRACK_COUNT-1,d4
000721ac 4eba07f2	jsr	PSGNoteOff(pc)
000721b0 dac6	adda.w	d6,a5
000721b2 51ccfff8	dbf	d4,.psgnoteoffloop
000721b6 584f	addq.w	#4,sp
000721b8 4e75	rts	
000721c6 4a2e0027	tst.b	SMPS_RAM.f_1up_playing(a6)
000721ca 660000fa	bne.w	.clear_sndprio
000721ce 4a2e0004	tst.b	SMPS_RAM.v_fadeout_counter(a6)
000721d2 660000f2	bne.w	.clear_sndprio
000721d6 4a2e0024	tst.b	SMPS_RAM.f_fadein_flag(a6)
000721da 660000ea	bne.w	.clear_sndprio
000721de 0c0700b5	cmpi.b	#sfx_Ring,d7
000721e2 6610	bne.s	.sfx_notRing
000721e4 4a2e002b	tst.b	SMPS_RAM.v_ring_speaker(a6)
000721e8 6604	bne.s	.gotringspeaker
000721ea 1e3c00ce	move.b	#sfx_RingLeft,d7
000721ee 086e0000002b	bchg	#0,SMPS_RAM.v_ring_speaker(a6)
000721f4 0c0700a7	cmpi.b	#sfx_Push,d7
000721f8 660e	bne.s	.sfx_notPush
000721fa 4a2e002c	tst.b	SMPS_RAM.f_push_playing(a6)
000721fe 660000c4	bne.w	.locret
00072202 1d7c0080002c	move.b	#$80,SMPS_RAM.f_push_playing(a6)
00072208 20790007199c	movea.l	(Go_SoundIndex).l,a0
0007220e 040700a0	subi.b	#sfx__First,d7
00072212 e54f	lsl.w	#2,d7
00072214 26707000	movea.l	(a0,d7.w),a3
00072218 224b	movea.l	a3,a1
0007221a 7200	moveq	#0,d1
0007221c 3219	move.w	(a1)+,d1
0007221e d28b	add.l	a3,d1
00072220 1a19	move.b	(a1)+,d5
00072222 1e19	move.b	(a1)+,d7
00072224 5307	subq.b	#1,d7
00072226 7c30	moveq	#SMPS_Track.len,d6
00072228 7600	moveq	#0,d3
0007222a 16290001	move.b	1(a1),d3
0007222e 1803	move.b	d3,d4
00072230 6b12	bmi.s	.sfxinitpsg
00072232 5543	subq.w	#2,d3
00072234 e54b	lsl.w	#2,d3
00072236 4bfa0094	lea	SFX_BGMChannelRAM(pc),a5
0007223a 2a753000	movea.l	(a5,d3.w),a5
0007223e 08d50002	bset	#2,SMPS_Track.PlaybackControl(a5)
00072242 602a	bra.s	.sfxoverridedone
00072244 e64b	lsr.w	#3,d3
00072246 4bfa0084	lea	SFX_BGMChannelRAM(pc),a5
0007224a 2a753000	movea.l	(a5,d3.w),a5
0007224e 08d50002	bset	#2,SMPS_Track.PlaybackControl(a5)
00072252 0c0400c0	cmpi.b	#$C0,d4
00072256 6616	bne.s	.sfxoverridedone
00072258 1004	move.b	d4,d0
0007225a 0000001f	ori.b	#$1F,d0
0007225e 13c000c00011	move.b	d0,(psg_input).l
00072264 08400005	bchg	#5,d0
00072268 13c000c00011	move.b	d0,(psg_input).l
0007226e 2a7b307c	movea.l	SFX_SFXChannelRAM(pc,d3.w),a5
00072272 244d	movea.l	a5,a2
00072274 700b	moveq	#(SMPS_Track.len/4)-1,d0
00072276 429a	clr.l	(a2)+
00072278 51c8fffc	dbf	d0,.clearsfxtrackram
0007227c 3a99	move.w	(a1)+,SMPS_Track.PlaybackControl(a5)
0007227e 1b450002	move.b	d5,SMPS_Track.TempoDivider(a5)
00072282 7000	moveq	#0,d0
00072284 3019	move.w	(a1)+,d0
00072286 d08b	add.l	a3,d0
00072288 2b400004	move.l	d0,SMPS_Track.DataPointer(a5)
0007228c 3b590008	move.w	(a1)+,SMPS_Track.Transpose(a5)
00072290 1b7c0001000e	move.b	#1,SMPS_Track.DurationTimeout(a5)
00072296 1b46000d	move.b	d6,SMPS_Track.StackPointer(a5)
0007229a 4a04	tst.b	d4
0007229c 6b0a	bmi.s	.sfxpsginitdone
0007229e 1b7c00c0000a	move.b	#$C0,SMPS_Track.AMSFMSPan(a5)
000722a4 2b410020	move.l	d1,SMPS_Track.VoicePtr(a5)
000722a8 51cfff7e	dbf	d7,.sfx_loadloop
000722ac 4a2e0250	tst.b	SMPS_RAM.v_sfx_fm4_track.PlaybackControl(a6)
000722b0 6a06	bpl.s	.doneoverride
000722b2 08ee00020340	bset	#2,SMPS_RAM.v_spcsfx_fm4_track.PlaybackControl(a6)
000722b8 4a2e0310	tst.b	SMPS_RAM.v_sfx_psg3_track.PlaybackControl(a6)
000722bc 6a06	bpl.s	.locret
000722be 08ee00020370	bset	#2,SMPS_RAM.v_spcsfx_psg3_track.PlaybackControl(a6)
000722c4 4e75	rts	
000722ca 4e75	rts	
0007230c 4a2e0027	tst.b	SMPS_RAM.f_1up_playing(a6)
00072310 660000b4	bne.w	.locret
00072314 4a2e0004	tst.b	SMPS_RAM.v_fadeout_counter(a6)
00072318 660000ac	bne.w	.locret
0007231c 4a2e0024	tst.b	SMPS_RAM.f_fadein_flag(a6)
00072320 660000a4	bne.w	.locret
00072324 207900071994	movea.l	(Go_SpecSoundIndex).l,a0
0007232a 040700d0	subi.b	#spec__First,d7
0007232e e54f	lsl.w	#2,d7
00072330 26707000	movea.l	(a0,d7.w),a3
00072334 224b	movea.l	a3,a1
00072336 7000	moveq	#0,d0
00072338 3019	move.w	(a1)+,d0
0007233a d08b	add.l	a3,d0
0007233c 2d400020	move.l	d0,SMPS_RAM.v_special_voice_ptr(a6)
00072340 1a19	move.b	(a1)+,d5
00072342 1e19	move.b	(a1)+,d7
00072344 5307	subq.b	#1,d7
00072346 7c30	moveq	#SMPS_Track.len,d6
00072348 18290001	move.b	1(a1),d4
0007234c 6b0c	bmi.s	.sfxoverridepsg
0007234e 08ee00020100	bset	#2,SMPS_RAM.v_music_fm4_track.PlaybackControl(a6)
00072354 4bee0340	lea	SMPS_RAM.v_spcsfx_fm4_track(a6),a5
00072358 600a	bra.s	.sfxinitpsg
0007235a 08ee000201f0	bset	#2,SMPS_RAM.v_music_psg3_track.PlaybackControl(a6)
00072360 4bee0370	lea	SMPS_RAM.v_spcsfx_psg3_track(a6),a5
00072364 244d	movea.l	a5,a2
00072366 700b	moveq	#(SMPS_Track.len/4)-1,d0
00072368 429a	clr.l	(a2)+
0007236a 51c8fffc	dbf	d0,.clearsfxtrackram
0007236e 3a99	move.w	(a1)+,SMPS_Track.PlaybackControl(a5)
00072370 1b450002	move.b	d5,SMPS_Track.TempoDivider(a5)
00072374 7000	moveq	#0,d0
00072376 3019	move.w	(a1)+,d0
00072378 d08b	add.l	a3,d0
0007237a 2b400004	move.l	d0,SMPS_Track.DataPointer(a5)
0007237e 3b590008	move.w	(a1)+,SMPS_Track.Transpose(a5)
00072382 1b7c0001000e	move.b	#1,SMPS_Track.DurationTimeout(a5)
00072388 1b46000d	move.b	d6,SMPS_Track.StackPointer(a5)
0007238c 4a04	tst.b	d4
0007238e 6b06	bmi.s	.sfxpsginitdone
00072390 1b7c00c0000a	move.b	#$C0,SMPS_Track.AMSFMSPan(a5)
00072396 51cfffb0	dbf	d7,.sfxloadloop
0007239a 4a2e0250	tst.b	SMPS_RAM.v_sfx_fm4_track.PlaybackControl(a6)
0007239e 6a06	bpl.s	.doneoverride
000723a0 08ee00020340	bset	#2,SMPS_RAM.v_spcsfx_fm4_track.PlaybackControl(a6)
000723a6 4a2e0310	tst.b	SMPS_RAM.v_sfx_psg3_track.PlaybackControl(a6)
000723aa 6a1a	bpl.s	.locret
000723ac 08ee00020370	bset	#2,SMPS_RAM.v_spcsfx_psg3_track.PlaybackControl(a6)
000723b2 0004001f	ori.b	#$1F,d4
000723b6 13c400c00011	move.b	d4,(psg_input).l
000723bc 08440005	bchg	#5,d4
000723c0 13c400c00011	move.b	d4,(psg_input).l
000723c6 4e75	rts	
000723e4 4bee0220	lea	SMPS_RAM.v_sfx_track_ram(a6),a5
000723e8 7e05	moveq	#SMPS_SFX_TRACK_COUNT-1,d7
000723ea 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000723ec 6a000084	bpl.w	.nexttrack
000723f0 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
000723f4 7600	moveq	#0,d3
000723f6 162d0001	move.b	SMPS_Track.VoiceControl(a5),d3
000723fa 6b40	bmi.s	.trackpsg
000723fc 4eba0300	jsr	FMNoteOff(pc)
00072400 0c030004	cmpi.b	#4,d3
00072404 6610	bne.s	.getfmpointer
00072406 4a2e0340	tst.b	SMPS_RAM.v_spcsfx_fm4_track.PlaybackControl(a6)
0007240a 6a0a	bpl.s	.getfmpointer
0007240c 4bee0340	lea	SMPS_RAM.v_spcsfx_fm4_track(a6),a5
00072410 226e0020	movea.l	SMPS_RAM.v_special_voice_ptr(a6),a1
00072414 6012	bra.s	.gotfmpointer
00072416 5503	subq.b	#2,d3
00072418 e50b	lsl.b	#2,d3
0007241a 41fafeb0	lea	SFX_BGMChannelRAM(pc),a0
0007241e 264d	movea.l	a5,a3
00072420 2a703000	movea.l	(a0,d3.w),a5
00072424 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072428 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
0007242c 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072430 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072434 4eba0818	jsr	SetVoice(pc)
00072438 2a4b	movea.l	a3,a5
0007243a 6036	bra.s	.nexttrack
0007243c 4eba0562	jsr	PSGNoteOff(pc)
00072440 41ee0370	lea	SMPS_RAM.v_spcsfx_psg3_track(a6),a0
00072444 0c0300e0	cmpi.b	#$E0,d3
00072448 6710	beq.s	.gotpsgpointer
0007244a 0c0300c0	cmpi.b	#$C0,d3
0007244e 670a	beq.s	.gotpsgpointer
00072450 e60b	lsr.b	#3,d3
00072452 41fafe78	lea	SFX_BGMChannelRAM(pc),a0
00072456 20703000	movea.l	(a0,d3.w),a0
0007245a 08900002	bclr	#2,SMPS_Track.PlaybackControl(a0)
0007245e 08d00001	bset	#1,SMPS_Track.PlaybackControl(a0)
00072462 0c2800e00001	cmpi.b	#$E0,SMPS_Track.VoiceControl(a0)
00072468 6608	bne.s	.nexttrack
0007246a 13e8001f00c00011	move.b	SMPS_Track.PSGNoise(a0),(psg_input).l
00072472 dafc0030	adda.w	#SMPS_Track.len,a5
00072476 51cfff72	dbf	d7,.trackloop
0007247a 4e75	rts	
0007247c 4bee0340	lea	SMPS_RAM.v_spcsfx_fm4_track(a6),a5
00072480 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00072482 6a2a	bpl.s	.fadedfm
00072484 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00072488 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
0007248c 6620	bne.s	.fadedfm
0007248e 4eba027a	jsr	SendFMNoteOff(pc)
00072492 4bee0100	lea	SMPS_RAM.v_music_fm4_track(a6),a5
00072496 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
0007249a 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
0007249e 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000724a0 6a0c	bpl.s	.fadedfm
000724a2 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
000724a6 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
000724aa 4eba07a2	jsr	SetVoice(pc)
000724ae 4bee0370	lea	SMPS_RAM.v_spcsfx_psg3_track(a6),a5
000724b2 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000724b4 6a2e	bpl.s	.fadedpsg
000724b6 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
000724ba 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
000724be 6624	bne.s	.fadedpsg
000724c0 4eba04e4	jsr	SendPSGNoteOff(pc)
000724c4 4bee01f0	lea	SMPS_RAM.v_music_psg3_track(a6),a5
000724c8 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
000724cc 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
000724d0 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000724d2 6a10	bpl.s	.fadedpsg
000724d4 0c2d00e00001	cmpi.b	#$E0,SMPS_Track.VoiceControl(a5)
000724da 6608	bne.s	.fadedpsg
000724dc 13ed001f00c00011	move.b	SMPS_Track.PSGNoise(a5),(psg_input).l
000724e4 4e75	rts	
000724e6 4ebafef8	jsr	StopSFX(pc)
000724ea 4ebaff90	jsr	StopSpecialSFX(pc)
000724ee 1d7c00030006	move.b	#3,SMPS_RAM.v_fadeout_delay(a6)
000724f4 1d7c00280004	move.b	#$28,SMPS_RAM.v_fadeout_counter(a6)
000724fa 422e0040	clr.b	SMPS_RAM.v_music_dac_track.PlaybackControl(a6)
000724fe 422e002a	clr.b	SMPS_RAM.f_speedup(a6)
00072502 4e75	rts	
00072504 102e0006	move.b	SMPS_RAM.v_fadeout_delay(a6),d0
00072508 6706	beq.s	.continuefade
0007250a 532e0006	subq.b	#1,SMPS_RAM.v_fadeout_delay(a6)
0007250e 4e75	rts	
00072510 532e0004	subq.b	#1,SMPS_RAM.v_fadeout_counter(a6)
00072514 67000088	beq.w	StopAllSound
00072518 1d7c00030006	move.b	#3,SMPS_RAM.v_fadeout_delay(a6)
0007251e 4bee0070	lea	SMPS_RAM.v_music_fm_tracks(a6),a5
00072522 7e05	moveq	#SMPS_MUSIC_FM_TRACK_COUNT-1,d7
00072524 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00072526 6a10	bpl.s	.nextfm
00072528 522d0009	addq.b	#1,SMPS_Track.Volume(a5)
0007252c 6a06	bpl.s	.sendfmtl
0007252e 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00072532 6004	bra.s	.nextfm
00072534 4eba077e	jsr	SendVoiceTL(pc)
00072538 dafc0030	adda.w	#SMPS_Track.len,a5
0007253c 51cfffe6	dbf	d7,.fmloop
00072540 7e02	moveq	#SMPS_MUSIC_PSG_TRACK_COUNT-1,d7
00072542 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00072544 6a1a	bpl.s	.nextpsg
00072546 522d0009	addq.b	#1,SMPS_Track.Volume(a5)
0007254a 0c2d00100009	cmpi.b	#$10,SMPS_Track.Volume(a5)
00072550 6506	blo.s	.sendpsgvol
00072552 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00072556 6008	bra.s	.nextpsg
00072558 1c2d0009	move.b	SMPS_Track.Volume(a5),d6
0007255c 4eba040c	jsr	SetPSGVolume(pc)
00072560 dafc0030	adda.w	#SMPS_Track.len,a5
00072564 51cfffdc	dbf	d7,.psgloop
00072568 4e75	rts	
0007256a 7602	moveq	#2,d3
0007256c 7028	moveq	#$28,d0
0007256e 1203	move.b	d3,d1
00072570 4eba01bc	jsr	WriteFMI(pc)
00072574 5801	addq.b	#4,d1
00072576 4eba01b6	jsr	WriteFMI(pc)
0007257a 51cbfff2	dbf	d3,.noteoffloop
0007257e 7040	moveq	#$40,d0
00072580 727f	moveq	#$7F,d1
00072582 7802	moveq	#2,d4
00072584 7603	moveq	#3,d3
00072586 4eba01a6	jsr	WriteFMI(pc)
0007258a 4eba01d8	jsr	WriteFMII(pc)
0007258e 5840	addq.w	#4,d0
00072590 51cbfff4	dbf	d3,.channeltlloop
00072594 0400000f	subi.b	#$F,d0
00072598 51ccffea	dbf	d4,.channelloop
0007259c 4e75	rts	
0007259e 702b	moveq	#$2B,d0
000725a0 123c0080	move.b	#$80,d1
000725a4 4eba0188	jsr	WriteFMI(pc)
000725a8 7027	moveq	#$27,d0
000725aa 7200	moveq	#0,d1
000725ac 4eba0180	jsr	WriteFMI(pc)
000725b0 204e	movea.l	a6,a0
000725b2 303c00e3	move.w	#((SMPS_RAM.v_1up_ram_copy-$10)/4)-1,d0
000725b6 4298	clr.l	(a0)+
000725b8 51c8fffc	dbf	d0,.clearramloop
000725bc 1d7c00800009	move.b	#$80,SMPS_RAM.v_sound_id(a6)
000725c2 4ebaffa6	jsr	FMSilenceAll(pc)
000725c6 600003ee	bra.w	PSGSilenceAll
000725ca 204e	movea.l	a6,a0
000725d0 142e0027	move.b	SMPS_RAM.f_1up_playing(a6),d2
000725d4 162e002a	move.b	SMPS_RAM.f_speedup(a6),d3
000725d8 182e0026	move.b	SMPS_RAM.v_fadein_counter(a6),d4
000725dc 3a2e000a	move.w	SMPS_RAM.v_soundqueue0(a6),d5
000725e0 303c0087	move.w	#((SMPS_RAM.v_1up_ram_end-SMPS_RAM.v_1up_ram)/4)-1,d0
000725e4 4298	clr.l	(a0)+
000725e6 51c8fffc	dbf	d0,.clearramloop
000725ee 1d420027	move.b	d2,SMPS_RAM.f_1up_playing(a6)
000725f2 1d43002a	move.b	d3,SMPS_RAM.f_speedup(a6)
000725f6 1d440026	move.b	d4,SMPS_RAM.v_fadein_counter(a6)
000725fa 3d45000a	move.w	d5,SMPS_RAM.v_soundqueue0(a6)
000725fe 1d7c00800009	move.b	#$80,SMPS_RAM.v_sound_id(a6)
00072604 4ebaff64	jsr	FMSilenceAll(pc)
00072608 600003ac	bra.w	PSGSilenceAll
0007260c 1d6e00020001	move.b	SMPS_RAM.v_main_tempo(a6),SMPS_RAM.v_main_tempo_timeout(a6)
00072612 41ee004e	lea	SMPS_RAM.v_music_track_ram+SMPS_Track.DurationTimeout(a6),a0
00072616 7030	moveq	#SMPS_Track.len,d0
00072618 7209	moveq	#SMPS_MUSIC_TRACK_COUNT-1,d1
0007261a 5210	addq.b	#1,(a0)
0007261c d0c0	adda.w	d0,a0
0007261e 51c9fffa	dbf	d1,.tempoloop
00072622 4e75	rts	
00072624 4a2e0027	tst.b	SMPS_RAM.f_1up_playing(a6)
00072628 6614	bne.s	.speedup_1up
0007262a 1d6e00290002	move.b	SMPS_RAM.v_speeduptempo(a6),SMPS_RAM.v_main_tempo(a6)
00072630 1d6e00290001	move.b	SMPS_RAM.v_speeduptempo(a6),SMPS_RAM.v_main_tempo_timeout(a6)
00072636 1d7c0080002a	move.b	#$80,SMPS_RAM.f_speedup(a6)
0007263c 4e75	rts	
0007263e 1d6e03c903a2	move.b	SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_speeduptempo(a6),SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_main_tempo(a6)
00072644 1d6e03c903a1	move.b	SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_speeduptempo(a6),SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_main_tempo_timeout(a6)
0007264a 1d7c008003ca	move.b	#$80,SMPS_RAM.v_1up_ram_copy+SMPS_RAM.f_speedup(a6)
00072650 4e75	rts	
00072652 4a2e0027	tst.b	SMPS_RAM.f_1up_playing(a6)
00072656 6612	bne.s	.slowdown_1up
00072658 1d6e00280002	move.b	SMPS_RAM.v_tempo_mod(a6),SMPS_RAM.v_main_tempo(a6)
0007265e 1d6e00280001	move.b	SMPS_RAM.v_tempo_mod(a6),SMPS_RAM.v_main_tempo_timeout(a6)
00072664 422e002a	clr.b	SMPS_RAM.f_speedup(a6)
00072668 4e75	rts	
0007266a 1d6e03c803a2	move.b	SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_tempo_mod(a6),SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_main_tempo(a6)
00072670 1d6e03c803a1	move.b	SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_tempo_mod(a6),SMPS_RAM.v_1up_ram_copy+SMPS_RAM.v_main_tempo_timeout(a6)
00072676 422e03ca	clr.b	SMPS_RAM.v_1up_ram_copy+SMPS_RAM.f_speedup(a6)
0007267a 4e75	rts	
0007267c 4a2e0025	tst.b	SMPS_RAM.v_fadein_delay(a6)
00072680 6706	beq.s	.continuefade
00072682 532e0025	subq.b	#1,SMPS_RAM.v_fadein_delay(a6)
00072686 4e75	rts	
00072688 4a2e0026	tst.b	SMPS_RAM.v_fadein_counter(a6)
0007268c 6748	beq.s	.fadedone
0007268e 532e0026	subq.b	#1,SMPS_RAM.v_fadein_counter(a6)
00072692 1d7c00020025	move.b	#2,SMPS_RAM.v_fadein_delay(a6)
00072698 4bee0070	lea	SMPS_RAM.v_music_fm_tracks(a6),a5
0007269c 7e05	moveq	#SMPS_MUSIC_FM_TRACK_COUNT-1,d7
0007269e 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000726a0 6a08	bpl.s	.nextfm
000726a2 532d0009	subq.b	#1,SMPS_Track.Volume(a5)
000726a6 4eba060c	jsr	SendVoiceTL(pc)
000726aa dafc0030	adda.w	#SMPS_Track.len,a5
000726ae 51cfffee	dbf	d7,.fmloop
000726b2 7e02	moveq	#SMPS_MUSIC_PSG_TRACK_COUNT-1,d7
000726b4 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
000726b6 6a14	bpl.s	.nextpsg
000726b8 532d0009	subq.b	#1,SMPS_Track.Volume(a5)
000726bc 1c2d0009	move.b	SMPS_Track.Volume(a5),d6
000726c0 0c060010	cmpi.b	#$10,d6
000726c4 6502	blo.s	.sendpsgvol
000726c6 7c0f	moveq	#$F,d6
000726c8 4eba02a0	jsr	SetPSGVolume(pc)
000726cc dafc0030	adda.w	#SMPS_Track.len,a5
000726d0 51cfffe2	dbf	d7,.psgloop
000726d4 4e75	rts	
000726d6 08ae00020040	bclr	#2,SMPS_RAM.v_music_dac_track.PlaybackControl(a6)
000726dc 422e0024	clr.b	SMPS_RAM.f_fadein_flag(a6)
000726e0 4e75	rts	
000726e2 08150001	btst	#1,SMPS_Track.PlaybackControl(a5)
000726e6 6614	bne.s	.locret
000726e8 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
000726ec 660e	bne.s	.locret
000726ee 7028	moveq	#$28,d0
000726f0 122d0001	move.b	SMPS_Track.VoiceControl(a5),d1
000726f4 000100f0	ori.b	#$F0,d1
000726f8 60000034	bra.w	WriteFMI
000726fc 4e75	rts	
000726fe 08150004	btst	#4,SMPS_Track.PlaybackControl(a5)
00072702 6610	bne.s	locret_72714
00072704 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072708 660a	bne.s	locret_72714
0007270a 7028	moveq	#$28,d0
0007270c 122d0001	move.b	SMPS_Track.VoiceControl(a5),d1
00072710 6000001c	bra.w	WriteFMI
00072714 4e75	rts	
00072716 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
0007271a 6604	bne.s	.locret
0007271c 60000004	bra.w	WriteFMIorII
00072720 4e75	rts	
00072722 082d00020001	btst	#2,SMPS_Track.VoiceControl(a5)
00072728 6630	bne.s	WriteFMIIPart
0007272a d02d0001	add.b	SMPS_Track.VoiceControl(a5),d0
0007272e 143900a04000	move.b	(ym2612_a0).l,d2
00072734 08020007	btst	#7,d2
00072738 66f4	bne.s	WriteFMI
0007273a 13c000a04000	move.b	d0,(ym2612_a0).l
00072740 4e71	nop	
00072742 4e71	nop	
00072744 4e71	nop	
00072746 143900a04000	move.b	(ym2612_a0).l,d2
0007274c 08020007	btst	#7,d2
00072750 66f4	bne.s	.waitloop
00072752 13c100a04001	move.b	d1,(ym2612_d0).l
00072758 4e75	rts	
0007275a 142d0001	move.b	SMPS_Track.VoiceControl(a5),d2
0007275e 08820002	bclr	#2,d2
00072762 d002	add.b	d2,d0
00072764 143900a04000	move.b	(ym2612_a0).l,d2
0007276a 08020007	btst	#7,d2
0007276e 66f4	bne.s	WriteFMII
00072770 13c000a04002	move.b	d0,(ym2612_a1).l
00072776 4e71	nop	
00072778 4e71	nop	
0007277a 4e71	nop	
0007277c 143900a04000	move.b	(ym2612_a0).l,d2
00072782 08020007	btst	#7,d2
00072786 66f4	bne.s	.waitloop
00072788 13c100a04003	move.b	d1,(ym2612_d1).l
0007278e 4e75	rts	
00072850 532d000e	subq.b	#1,SMPS_Track.DurationTimeout(a5)
00072854 6610	bne.s	.notegoing
00072856 08950004	bclr	#4,SMPS_Track.PlaybackControl(a5)
0007285a 4eba001c	jsr	PSGDoNext(pc)
0007285e 4eba007c	jsr	PSGDoNoteOn(pc)
00072862 600000ca	bra.w	PSGDoVolFX
00072866 4ebaf536	jsr	NoteTimeoutUpdate(pc)
0007286a 4eba00ba	jsr	PSGUpdateVolFX(pc)
0007286e 4ebaf556	jsr	DoModulation(pc)
00072872 4eba006e	jsr	PSGUpdateFreq(pc)
00072876 4e75	rts	
00072878 08950001	bclr	#1,SMPS_Track.PlaybackControl(a5)
0007287c 286d0004	movea.l	SMPS_Track.DataPointer(a5),a4
00072880 7a00	moveq	#0,d5
00072882 1a1c	move.b	(a4)+,d5
00072884 0c0500e0	cmpi.b	#$E0,d5
00072888 6506	blo.s	.gotnote
0007288a 4eba01ce	jsr	CoordFlag(pc)
0007288e 60f0	bra.s	.noteloop
00072890 4a05	tst.b	d5
00072892 6a10	bpl.s	.gotduration
00072894 4eba0016	jsr	PSGSetFreq(pc)
00072898 1a1c	move.b	(a4)+,d5
0007289a 4a05	tst.b	d5
0007289c 6a06	bpl.s	.gotduration
0007289e 534c	subq.w	#1,a4
000728a0 6000f4be	bra.w	FinishTrackUpdate
000728a4 4ebaf49a	jsr	SetDuration(pc)
000728a8 6000f4b6	bra.w	FinishTrackUpdate
000728ac 04050081	subi.b	#$81,d5
000728b0 6518	bcs.s	.restpsg
000728b2 da2d0008	add.b	SMPS_Track.Transpose(a5),d5
000728b6 0245007f	andi.w	#$7F,d5
000728ba e34d	lsl.w	#1,d5
000728bc 41fa0110	lea	PSGFrequencies(pc),a0
000728c0 3b7050000010	move.w	(a0,d5.w),SMPS_Track.Freq(a5)
000728c6 6000f498	bra.w	FinishTrackUpdate
000728ca 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
000728ce 3b7cffff0010	move.w	#-1,SMPS_Track.Freq(a5)
000728d4 4ebaf48a	jsr	FinishTrackUpdate(pc)
000728d8 600000c6	bra.w	PSGNoteOff
000728dc 3c2d0010	move.w	SMPS_Track.Freq(a5),d6
000728e0 6b3e	bmi.s	PSGSetRest
000728e2 102d001e	move.b	SMPS_Track.Detune(a5),d0
000728e6 4880	ext.w	d0
000728e8 dc40	add.w	d0,d6
000728ea 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
000728ee 662e	bne.s	.locret
000728f0 08150001	btst	#1,SMPS_Track.PlaybackControl(a5)
000728f4 6628	bne.s	.locret
000728f6 102d0001	move.b	SMPS_Track.VoiceControl(a5),d0
000728fa 0c0000e0	cmpi.b	#$E0,d0
000728fe 6604	bne.s	.notnoise
00072900 103c00c0	move.b	#$C0,d0
00072904 3206	move.w	d6,d1
00072906 0201000f	andi.b	#$F,d1
0007290a 8001	or.b	d1,d0
0007290c e84e	lsr.w	#4,d6
0007290e 0206003f	andi.b	#$3F,d6
00072912 13c000c00011	move.b	d0,(psg_input).l
00072918 13c600c00011	move.b	d6,(psg_input).l
0007291e 4e75	rts	
00072920 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072924 4e75	rts	
00072926 4a2d000b	tst.b	SMPS_Track.VoiceIndex(a5)
0007292a 6700005e	beq.w	locret_7298A
0007292e 1c2d0009	move.b	SMPS_Track.Volume(a5),d6
00072932 7000	moveq	#0,d0
00072934 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072938 6730	beq.s	SetPSGVolume
0007293a 2079000719a4	movea.l	(Go_PSGIndex).l,a0
00072940 5340	subq.w	#1,d0
00072942 e548	lsl.w	#2,d0
00072944 20700000	movea.l	(a0,d0.w),a0
00072948 102d000c	move.b	SMPS_Track.VolEnvIndex(a5),d0
0007294c 10300000	move.b	(a0,d0.w),d0
00072950 522d000c	addq.b	#1,SMPS_Track.VolEnvIndex(a5)
00072954 08000007	btst	#7,d0
00072958 6706	beq.s	.gotflutter
0007295a 0c000080	cmpi.b	#$80,d0
0007295e 673a	beq.s	VolEnvHold
00072960 dc40	add.w	d0,d6
00072962 0c060010	cmpi.b	#$10,d6
00072966 6502	blo.s	SetPSGVolume
00072968 7c0f	moveq	#$F,d6
0007296a 08150001	btst	#1,SMPS_Track.PlaybackControl(a5)
0007296e 661a	bne.s	locret_7298A
00072970 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072974 6614	bne.s	locret_7298A
00072976 08150004	btst	#4,SMPS_Track.PlaybackControl(a5)
0007297a 6610	bne.s	PSGCheckNoteTimeout
0007297c 8c2d0001	or.b	SMPS_Track.VoiceControl(a5),d6
00072980 06060010	addi.b	#$10,d6
00072984 13c600c00011	move.b	d6,(psg_input).l
0007298a 4e75	rts	
0007298c 4a2d0013	tst.b	SMPS_Track.NoteTimeoutMaster(a5)
00072990 67ea	beq.s	PSGSendVolume
00072992 4a2d0012	tst.b	SMPS_Track.NoteTimeout(a5)
00072996 66e4	bne.s	PSGSendVolume
00072998 4e75	rts	
0007299a 532d000c	subq.b	#1,SMPS_Track.VolEnvIndex(a5)
0007299e 4e75	rts	
000729a0 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
000729a4 660e	bne.s	locret_729B4
000729a6 102d0001	move.b	SMPS_Track.VoiceControl(a5),d0
000729aa 0000001f	ori.b	#$1F,d0
000729ae 13c000c00011	move.b	d0,(psg_input).l
000729b4 4e75	rts	
000729b6 41f900c00011	lea	(psg_input).l,a0
000729bc 10bc009f	move.b	#$9F,(a0)
000729c0 10bc00bf	move.b	#$BF,(a0)
000729c4 10bc00df	move.b	#$DF,(a0)
000729c8 10bc00ff	move.b	#$FF,(a0)
000729cc 4e75	rts	
00072a5a 044500e0	subi.w	#$E0,d5
00072a5e e54d	lsl.w	#2,d5
00072a60 4efb5002	jmp	coordflagLookup(pc,d5.w)
00072a64 60000066	bra.w	cfPanningAMSFMS
00072a68 60000082	bra.w	cfDetune
00072a6c 60000084	bra.w	cfSetCommunication
00072a70 60000086	bra.w	cfJumpReturn
00072a74 6000009e	bra.w	cfFadeInToPrevious
00072a78 60000124	bra.w	cfSetTempoDivider
00072a7c 60000126	bra.w	cfChangeFMVolume
00072a80 6000012c	bra.w	cfHoldNote
00072a84 6000012e	bra.w	cfNoteTimeout
00072a88 60000134	bra.w	cfChangeTransposition
00072a8c 60000138	bra.w	cfSetTempo
00072a90 6000013e	bra.w	cfSetTempoDividerAll
00072a94 60000150	bra.w	cfChangePSGVolume
00072a98 60000154	bra.w	cfClearPush
00072a9c 60000156	bra.w	cfStopSpecialFM4
00072aa0 60000184	bra.w	cfSetVoice
00072aa4 6000028a	bra.w	cfModulation
00072aa8 600002a8	bra.w	cfEnableModulation
00072aac 600002aa	bra.w	cfStopTrack
00072ab0 60000354	bra.w	cfSetPSGNoise
00072ab4 6000036a	bra.w	cfDisableModulation
00072ab8 6000036c	bra.w	cfSetPSGTone
00072abc 6000036e	bra.w	cfJumpTo
00072ac0 60000376	bra.w	cfRepeatAtPos
00072ac4 6000038c	bra.w	cfJumpToGosub
00072ac8 6000039a	bra.w	cfOpF9
00072acc 121c	move.b	(a4)+,d1
00072ace 4a2d0001	tst.b	SMPS_Track.VoiceControl(a5)
00072ad2 6b16	bmi.s	locret_72AEA
00072ad4 102d000a	move.b	SMPS_Track.AMSFMSPan(a5),d0
00072ad8 02000037	andi.b	#$37,d0
00072adc 8200	or.b	d0,d1
00072ade 1b41000a	move.b	d1,SMPS_Track.AMSFMSPan(a5)
00072ae2 103c00b4	move.b	#$B4,d0
00072ae6 6000fc2e	bra.w	WriteFMIorIIMain
00072aea 4e75	rts	
00072aec 1b5c001e	move.b	(a4)+,SMPS_Track.Detune(a5)
00072af0 4e75	rts	
00072af2 1d5c0007	move.b	(a4)+,SMPS_RAM.v_communication_byte(a6)
00072af6 4e75	rts	
00072af8 7000	moveq	#0,d0
00072afa 102d000d	move.b	SMPS_Track.StackPointer(a5),d0
00072afe 28750000	movea.l	(a5,d0.w),a4
00072b02 2bbc000000000000	move.l	#0,(a5,d0.w)
00072b0a 544c	addq.w	#2,a4
00072b0c 5800	addq.b	#4,d0
00072b0e 1b40000d	move.b	d0,SMPS_Track.StackPointer(a5)
00072b12 4e75	rts	
00072b14 204e	movea.l	a6,a0
00072b16 43ee03a0	lea	SMPS_RAM.v_1up_ram_copy(a6),a1
00072b1a 303c0087	move.w	#((SMPS_RAM.v_1up_ram_end-SMPS_RAM.v_1up_ram)/4)-1,d0
00072b1e 20d9	move.l	(a1)+,(a0)+
00072b20 51c8fffc	dbf	d0,.restoreramloop
00072b24 08ee00020040	bset	#2,SMPS_RAM.v_music_dac_track.PlaybackControl(a6)
00072b2a 264d	movea.l	a5,a3
00072b2c 1c3c0028	move.b	#$28,d6
00072b30 9c2e0026	sub.b	SMPS_RAM.v_fadein_counter(a6),d6
00072b34 7e05	moveq	#SMPS_MUSIC_FM_TRACK_COUNT-1,d7
00072b36 4bee0070	lea	SMPS_RAM.v_music_fm_tracks(a6),a5
00072b3a 08150007	btst	#7,SMPS_Track.PlaybackControl(a5)
00072b3e 671c	beq.s	.nextfm
00072b40 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072b44 dd2d0009	add.b	d6,SMPS_Track.Volume(a5)
00072b48 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072b4c 660e	bne.s	.nextfm
00072b4e 7000	moveq	#0,d0
00072b50 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072b54 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072b58 4eba00f4	jsr	SetVoice(pc)
00072b5c dafc0030	adda.w	#SMPS_Track.len,a5
00072b60 51cfffd8	dbf	d7,.fmloop
00072b64 7e02	moveq	#SMPS_MUSIC_PSG_TRACK_COUNT-1,d7
00072b66 08150007	btst	#7,SMPS_Track.PlaybackControl(a5)
00072b6a 670c	beq.s	.nextpsg
00072b6c 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072b70 4ebafe2e	jsr	PSGNoteOff(pc)
00072b74 dd2d0009	add.b	d6,SMPS_Track.Volume(a5)
00072b78 dafc0030	adda.w	#SMPS_Track.len,a5
00072b7c 51cfffe8	dbf	d7,.psgloop
00072b80 2a4b	movea.l	a3,a5
00072b82 1d7c00800024	move.b	#$80,SMPS_RAM.f_fadein_flag(a6)
00072b88 1d7c00280026	move.b	#$28,SMPS_RAM.v_fadein_counter(a6)
00072b8e 422e0027	clr.b	SMPS_RAM.f_1up_playing(a6)
00072b92 33fc000000a11100	move.w	#0,(z80_bus_request).l
00072b9a 504f	addq.w	#8,sp
00072b9c 4e75	rts	
00072b9e 1b5c0002	move.b	(a4)+,SMPS_Track.TempoDivider(a5)
00072ba2 4e75	rts	
00072ba4 101c	move.b	(a4)+,d0
00072ba6 d12d0009	add.b	d0,SMPS_Track.Volume(a5)
00072baa 60000108	bra.w	SendVoiceTL
00072bae 08d50004	bset	#4,SMPS_Track.PlaybackControl(a5)
00072bb2 4e75	rts	
00072bb4 1b540012	move.b	(a4),SMPS_Track.NoteTimeout(a5)
00072bb8 1b5c0013	move.b	(a4)+,SMPS_Track.NoteTimeoutMaster(a5)
00072bbc 4e75	rts	
00072bbe 101c	move.b	(a4)+,d0
00072bc0 d12d0008	add.b	d0,SMPS_Track.Transpose(a5)
00072bc4 4e75	rts	
00072bc6 1d540002	move.b	(a4),SMPS_RAM.v_main_tempo(a6)
00072bca 1d5c0001	move.b	(a4)+,SMPS_RAM.v_main_tempo_timeout(a6)
00072bce 4e75	rts	
00072bd0 41ee0040	lea	SMPS_RAM.v_music_track_ram(a6),a0
00072bd4 101c	move.b	(a4)+,d0
00072bd6 7230	moveq	#SMPS_Track.len,d1
00072bd8 7409	moveq	#SMPS_MUSIC_TRACK_COUNT-1,d2
00072bda 11400002	move.b	d0,SMPS_Track.TempoDivider(a0)
00072bde d0c1	adda.w	d1,a0
00072be0 51cafff8	dbf	d2,.trackloop
00072be4 4e75	rts	
00072be6 101c	move.b	(a4)+,d0
00072be8 d12d0009	add.b	d0,SMPS_Track.Volume(a5)
00072bec 4e75	rts	
00072bee 422e002c	clr.b	SMPS_RAM.f_push_playing(a6)
00072bf2 4e75	rts	
00072bf4 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00072bf8 08950004	bclr	#4,SMPS_Track.PlaybackControl(a5)
00072bfc 4ebafb00	jsr	FMNoteOff(pc)
00072c00 4a2e0250	tst.b	SMPS_RAM.v_sfx_fm4_track.PlaybackControl(a6)
00072c04 6b1c	bmi.s	.locexit
00072c06 264d	movea.l	a5,a3
00072c08 4bee0100	lea	SMPS_RAM.v_music_fm4_track(a6),a5
00072c0c 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072c10 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
00072c14 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072c18 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072c1c 4eba0030	jsr	SetVoice(pc)
00072c20 2a4b	movea.l	a3,a5
00072c22 504f	addq.w	#8,sp
00072c24 4e75	rts	
00072c26 7000	moveq	#0,d0
00072c28 101c	move.b	(a4)+,d0
00072c2a 1b40000b	move.b	d0,SMPS_Track.VoiceIndex(a5)
00072c2e 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072c32 66000076	bne.w	locret_72CAA
00072c36 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072c3a 4a2e000e	tst.b	SMPS_RAM.f_voice_selector(a6)
00072c3e 670e	beq.s	SetVoice
00072c40 226d0020	movea.l	SMPS_Track.VoicePtr(a5),a1
00072c44 4a2e000e	tst.b	SMPS_RAM.f_voice_selector(a6)
00072c48 6b04	bmi.s	SetVoice
00072c4a 226e0020	movea.l	SMPS_RAM.v_special_voice_ptr(a6),a1
00072c4e 5340	subq.w	#1,d0
00072c50 6b0a	bmi.s	.havevoiceptr
00072c52 323c0019	move.w	#25,d1
00072c56 d2c1	adda.w	d1,a1
00072c58 51c8fffc	dbf	d0,.voicemultiply
00072c5c 1219	move.b	(a1)+,d1
00072c5e 1b41001f	move.b	d1,SMPS_Track.FeedbackAlgo(a5)
00072c62 1801	move.b	d1,d4
00072c64 103c00b0	move.b	#$B0,d0
00072c68 4ebafab8	jsr	WriteFMIorII(pc)
00072c6c 45fa00aa	lea	FMInstrumentOperatorTable(pc),a2
00072c70 7613	moveq	#(FMInstrumentOperatorTable_End-FMInstrumentOperatorTable)-1,d3
00072c72 101a	move.b	(a2)+,d0
00072c74 1219	move.b	(a1)+,d1
00072c76 4ebafaaa	jsr	WriteFMIorII(pc)
00072c7a 51cbfff6	dbf	d3,.sendvoiceloop
00072c7e 7a03	moveq	#(FMInstrumentTLTable_End-FMInstrumentTLTable)-1,d5
00072c80 02440007	andi.w	#7,d4
00072c84 183b4026	move.b	FMSlotMask(pc,d4.w),d4
00072c88 162d0009	move.b	SMPS_Track.Volume(a5),d3
00072c8c 101a	move.b	(a2)+,d0
00072c8e 1219	move.b	(a1)+,d1
00072c90 e20c	lsr.b	#1,d4
00072c92 6402	bcc.s	.sendtl
00072c94 d203	add.b	d3,d1
00072c96 4ebafa8a	jsr	WriteFMIorII(pc)
00072c9a 51cdfff0	dbf	d5,.sendtlloop
00072c9e 103c00b4	move.b	#$B4,d0
00072ca2 122d000a	move.b	SMPS_Track.AMSFMSPan(a5),d1
00072ca6 4ebafa7a	jsr	WriteFMIorII(pc)
00072caa 4e75	rts	
00072cb4 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072cb8 665c	bne.s	.locret
00072cba 7000	moveq	#0,d0
00072cbc 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072cc0 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072cc4 4a2e000e	tst.b	SMPS_RAM.f_voice_selector(a6)
00072cc8 670e	beq.s	.gotvoiceptr
00072cca 226e0020	movea.l	SMPS_Track.VoicePtr(a6),a1
00072cce 4a2e000e	tst.b	SMPS_RAM.f_voice_selector(a6)
00072cd2 6b04	bmi.s	.gotvoiceptr
00072cd4 226e0020	movea.l	SMPS_RAM.v_special_voice_ptr(a6),a1
00072cd8 5340	subq.w	#1,d0
00072cda 6b0a	bmi.s	.gotvoice
00072cdc 323c0019	move.w	#25,d1
00072ce0 d2c1	adda.w	d1,a1
00072ce2 51c8fffc	dbf	d0,.voicemultiply
00072ce6 d2fc0015	adda.w	#21,a1
00072cea 45fa0040	lea	FMInstrumentTLTable(pc),a2
00072cee 102d001f	move.b	SMPS_Track.FeedbackAlgo(a5),d0
00072cf2 02400007	andi.w	#7,d0
00072cf6 183b00b4	move.b	FMSlotMask(pc,d0.w),d4
00072cfa 162d0009	move.b	SMPS_Track.Volume(a5),d3
00072cfe 6b16	bmi.s	.locret
00072d00 7a03	moveq	#(FMInstrumentTLTable_End-FMInstrumentTLTable)-1,d5
00072d02 101a	move.b	(a2)+,d0
00072d04 1219	move.b	(a1)+,d1
00072d06 e20c	lsr.b	#1,d4
00072d08 6408	bcc.s	.senttl
00072d0a d203	add.b	d3,d1
00072d0c 6504	bcs.s	.senttl
00072d0e 4ebafa12	jsr	WriteFMIorII(pc)
00072d12 51cdffee	dbf	d5,.sendtlloop
00072d16 4e75	rts	
00072d30 08d50003	bset	#3,SMPS_Track.PlaybackControl(a5)
00072d34 2b4c0014	move.l	a4,SMPS_Track.ModulationPtr(a5)
00072d38 1b5c0018	move.b	(a4)+,SMPS_Track.ModulationWait(a5)
00072d3c 1b5c0019	move.b	(a4)+,SMPS_Track.ModulationSpeed(a5)
00072d40 1b5c001a	move.b	(a4)+,SMPS_Track.ModulationDelta(a5)
00072d44 101c	move.b	(a4)+,d0
00072d46 e208	lsr.b	#1,d0
00072d48 1b40001b	move.b	d0,SMPS_Track.ModulationSteps(a5)
00072d4c 426d001c	clr.w	SMPS_Track.ModulationVal(a5)
00072d50 4e75	rts	
00072d52 08d50003	bset	#3,SMPS_Track.PlaybackControl(a5)
00072d56 4e75	rts	
00072d58 08950007	bclr	#7,SMPS_Track.PlaybackControl(a5)
00072d5c 08950004	bclr	#4,SMPS_Track.PlaybackControl(a5)
00072d60 4a2d0001	tst.b	SMPS_Track.VoiceControl(a5)
00072d64 6b0e	bmi.s	.stoppsg
00072d66 4a2e0008	tst.b	SMPS_RAM.f_updating_dac(a6)
00072d6a 6b000096	bmi.w	.locexit
00072d6e 4ebaf98e	jsr	FMNoteOff(pc)
00072d72 6004	bra.s	.stoppedchannel
00072d74 4ebafc2a	jsr	PSGNoteOff(pc)
00072d78 4a2e000e	tst.b	SMPS_RAM.f_voice_selector(a6)
00072d7c 6a000084	bpl.w	.locexit
00072d84 7000	moveq	#0,d0
00072d86 102d0001	move.b	SMPS_Track.VoiceControl(a5),d0
00072d8a 6b40	bmi.s	.getpsgptr
00072d8c 41faf53e	lea	SFX_BGMChannelRAM(pc),a0
00072d90 264d	movea.l	a5,a3
00072d92 0c000004	cmpi.b	#4,d0
00072d96 6610	bne.s	.getpointer
00072d98 4a2e0340	tst.b	SMPS_RAM.v_spcsfx_fm4_track.PlaybackControl(a6)
00072d9c 6a0a	bpl.s	.getpointer
00072d9e 4bee0340	lea	SMPS_RAM.v_spcsfx_fm4_track(a6),a5
00072da2 226e0020	movea.l	SMPS_RAM.v_special_voice_ptr(a6),a1
00072da6 6010	bra.s	.gotpointer
00072da8 5500	subq.b	#2,d0
00072daa e508	lsl.b	#2,d0
00072dac 2a700000	movea.l	(a0,d0.w),a5
00072db0 4a15	tst.b	SMPS_Track.PlaybackControl(a5)
00072db2 6a14	bpl.s	.novoiceupd
00072db4 226e0018	movea.l	SMPS_RAM.v_voice_ptr(a6),a1
00072db8 08950002	bclr	#2,SMPS_Track.PlaybackControl(a5)
00072dbc 08d50001	bset	#1,SMPS_Track.PlaybackControl(a5)
00072dc0 102d000b	move.b	SMPS_Track.VoiceIndex(a5),d0
00072dc4 4ebafe88	jsr	SetVoice(pc)
00072dc8 2a4b	movea.l	a3,a5
00072dca 6036	bra.s	.locexit
00072dcc 41ee0370	lea	SMPS_RAM.v_spcsfx_psg3_track(a6),a0
00072dd0 4a10	tst.b	SMPS_Track.PlaybackControl(a0)
00072dd2 6a0c	bpl.s	.getchannelptr
00072dd4 0c0000e0	cmpi.b	#$E0,d0
00072dd8 6710	beq.s	.gotchannelptr
00072dda 0c0000c0	cmpi.b	#$C0,d0
00072dde 670a	beq.s	.gotchannelptr
00072de0 41faf4ea	lea	SFX_BGMChannelRAM(pc),a0
00072de4 e608	lsr.b	#3,d0
00072de6 20700000	movea.l	(a0,d0.w),a0
00072dea 08900002	bclr	#2,SMPS_Track.PlaybackControl(a0)
00072dee 08d00001	bset	#1,SMPS_Track.PlaybackControl(a0)
00072df2 0c2800e00001	cmpi.b	#$E0,SMPS_Track.VoiceControl(a0)
00072df8 6608	bne.s	.locexit
00072dfa 13e8001f00c00011	move.b	SMPS_Track.PSGNoise(a0),(psg_input).l
00072e02 504f	addq.w	#8,sp
00072e04 4e75	rts	
00072e06 1b7c00e00001	move.b	#$E0,SMPS_Track.VoiceControl(a5)
00072e0c 1b5c001f	move.b	(a4)+,SMPS_Track.PSGNoise(a5)
00072e10 08150002	btst	#2,SMPS_Track.PlaybackControl(a5)
00072e14 6608	bne.s	.locret
00072e16 13ecffff00c00011	move.b	-1(a4),(psg_input).l
00072e1e 4e75	rts	
00072e20 08950003	bclr	#3,SMPS_Track.PlaybackControl(a5)
00072e24 4e75	rts	
00072e26 1b5c000b	move.b	(a4)+,SMPS_Track.VoiceIndex(a5)
00072e2a 4e75	rts	
00072e2c 101c	move.b	(a4)+,d0
00072e2e e148	lsl.w	#8,d0
00072e30 101c	move.b	(a4)+,d0
00072e32 d8c0	adda.w	d0,a4
00072e34 534c	subq.w	#1,a4
00072e36 4e75	rts	
00072e38 7000	moveq	#0,d0
00072e3a 101c	move.b	(a4)+,d0
00072e3c 121c	move.b	(a4)+,d1
00072e3e 4a350024	tst.b	SMPS_Track.LoopCounters(a5,d0.w)
00072e42 6604	bne.s	.loopexists
00072e44 1b810024	move.b	d1,SMPS_Track.LoopCounters(a5,d0.w)
00072e48 53350024	subq.b	#1,SMPS_Track.LoopCounters(a5,d0.w)
00072e4c 66de	bne.s	cfJumpTo
00072e4e 544c	addq.w	#2,a4
00072e50 4e75	rts	
00072e52 7000	moveq	#0,d0
00072e54 102d000d	move.b	SMPS_Track.StackPointer(a5),d0
00072e58 5900	subq.b	#4,d0
00072e5a 2b8c0000	move.l	a4,(a5,d0.w)
00072e5e 1b40000d	move.b	d0,SMPS_Track.StackPointer(a5)
00072e62 60c8	bra.s	cfJumpTo
00072e64 103c0088	move.b	#$88,d0
00072e68 123c000f	move.b	#$F,d1
00072e6c 4ebaf8c0	jsr	WriteFMI(pc)
00072e70 103c008c	move.b	#$8C,d0
00072e74 123c000f	move.b	#$F,d1
00072e78 6000f8b4	bra.w	WriteFMI
