Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- draw_player_sprite:
- ; Player sprites include Mega Man, his weapons,
- ; and "metaballs" when he explodes.
- ; Aside from a different location for graphics data and some
- ; special cases for Mega Man and bosses, this is largely the same
- ; as draw_enemy_sprites.
- 0F:CDE4: A6 2B LDX current_sprite_index
- 0F:CDE6: BD 20 04 LDA sprite_flags,X
- 0F:CDE9: 30 02 BMI +
- ; Sprite is inactive. Return.
- 0F:CDEB: 18 CLC
- 0F:CDEC: 60 RTS -----------------------------------------
- +:
- ; Get main data pointer
- 0F:CDED: BC 00 04 LDY sprite_ids[0],X
- 0F:CDF0: B9 00 F9 LDA player_main_gfx_ptrs_lo,Y
- 0F:CDF3: 85 08 STA $08
- 0F:CDF5: B9 00 FA LDA player_main_gfx_ptrs_hi,Y
- 0F:CDF8: 85 09 STA $09
- ; Increment animation timer
- 0F:CDFA: BD A0 06 LDA sprite_cel_nums[0],X
- 0F:CDFD: 48 PHA
- 0F:CDFE: FE 80 06 INC sprite_anim_timers[0],X
- 0F:CE01: A0 01 LDY #$01
- 0F:CE03: B1 08 LDA ($08),Y
- 0F:CE05: DD 80 06 CMP sprite_anim_timers[0],X
- 0F:CE08: B0 15 BCS +
- ; Timer expired, increment to next cel
- 0F:CE0A: A9 00 LDA #$00
- 0F:CE0C: 9D 80 06 STA sprite_anim_timers[0],X
- 0F:CE0F: FE A0 06 INC sprite_cel_nums[0],X
- ; Check if we've passed the end of the animation
- 0F:CE12: 88 DEY
- 0F:CE13: B1 08 LDA ($08),Y
- 0F:CE15: DD A0 06 CMP sprite_cel_nums[0],X
- 0F:CE18: B0 05 BCS +
- ; End of animation. Loop it.
- 0F:CE1A: A9 00 LDA #$00
- 0F:CE1C: 9D A0 06 STA sprite_cel_nums[0],X
- +:
- ; Start loading gfx data
- ; A = cel number
- ; Fetch cel ID from animation_data[cel_number + 2 ]
- 0F:CE1F: 68 PLA
- 0F:CE20: 18 CLC
- 0F:CE21: 69 02 ADC #$02
- 0F:CE23: A8 TAY
- 0F:CE24: B1 08 LDA ($08),Y
- 0F:CE26: D0 04 BNE +
- ; Cel 0 == end of nonlooping animation.
- ; Kill sprite.
- ;
- ; There's a bug here! If the flags bit 0 is set (which indicates
- ; the sprite collides with Mega Man), it will be shifted into the
- ; carry flag, giving an erroneous return value from this routine.
- ; This will make the main gfx routine return early.
- 0F:CE28: 5E 20 04 LSR sprite_flags,X
- 0F:CE2B: 60 RTS -----------------------------------------
Advertisement
RAW Paste Data
Copied
Advertisement