mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-27 22:29:46 +00:00
ootw: more code movement
This commit is contained in:
parent
dc29dc5cc8
commit
7d52059f6a
|
@ -56,3 +56,61 @@ gr_copy_line:
|
|||
|
||||
rts ; 6
|
||||
|
||||
|
||||
|
||||
;=========================================================
|
||||
; gr_copy_to_current, 40x48 version
|
||||
;=========================================================
|
||||
; copy 0x1000 to DRAW_PAGE
|
||||
|
||||
gr_copy_to_current_40:
|
||||
|
||||
lda DRAW_PAGE ; 3
|
||||
clc ; 2
|
||||
adc #$4 ; 2
|
||||
sta gr_copy_line_40+5 ; 4
|
||||
sta gr_copy_line_40+11 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+17 ; 4
|
||||
sta gr_copy_line_40+23 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+29 ; 4
|
||||
sta gr_copy_line_40+35 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+41 ; 4
|
||||
sta gr_copy_line_40+47 ; 4
|
||||
;===========
|
||||
; 45
|
||||
|
||||
ldy #119 ; for early ones, copy 120 bytes ; 2
|
||||
|
||||
gr_copy_line_40:
|
||||
lda $1000,Y ; load a byte (self modified) ; 4
|
||||
sta $400,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1080,Y ; load a byte (self modified) ; 4
|
||||
sta $480,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1100,Y ; load a byte (self modified) ; 4
|
||||
sta $500,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1180,Y ; load a byte (self modified) ; 4
|
||||
sta $580,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1200,Y ; load a byte (self modified) ; 4
|
||||
sta $600,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1280,Y ; load a byte (self modified) ; 4
|
||||
sta $680,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1300,Y ; load a byte (self modified) ; 4
|
||||
sta $700,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1380,Y ; load a byte (self modified) ; 4
|
||||
sta $780,Y ; store a byte (self modified) ; 5
|
||||
|
||||
dey ; decrement pointer ; 2
|
||||
bpl gr_copy_line_40 ; ; 2nt/3
|
||||
|
||||
rts ; 6
|
||||
|
||||
|
|
|
@ -261,325 +261,3 @@ still_in_cavern:
|
|||
done_cavern:
|
||||
rts
|
||||
|
||||
|
||||
;==================================
|
||||
; draw slugs
|
||||
;==================================
|
||||
|
||||
; outstate 0=dead 1=normal 2=dieing 3=falling
|
||||
|
||||
slugg0_out: .byte 1 ; 0
|
||||
slugg0_attack: .byte 0 ; 1
|
||||
slugg0_dieing: .byte 0 ; 2
|
||||
slugg0_x: .byte 30 ; 3
|
||||
slugg0_dir: .byte $ff ; 4
|
||||
slugg0_gait: .byte 0 ; 5
|
||||
|
||||
slugg1_out: .byte 1 ; 6
|
||||
slugg1_attack: .byte 0
|
||||
slugg1_dieing: .byte 0
|
||||
slugg1_x: .byte 30
|
||||
slugg1_dir: .byte $ff
|
||||
slugg1_gait: .byte 0
|
||||
|
||||
slugg2_out: .byte 1
|
||||
slugg2_attack: .byte 0
|
||||
slugg2_dieing: .byte 0
|
||||
slugg2_x: .byte 30
|
||||
slugg2_dir: .byte $ff
|
||||
slugg2_gait: .byte 0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
draw_slugs:
|
||||
|
||||
ldx #0
|
||||
stx WHICH_SLUG
|
||||
draw_slugs_loop:
|
||||
ldx WHICH_SLUG
|
||||
lda slugg0_out,X
|
||||
bne check_kicked ; don't draw if not there
|
||||
jmp slug_done
|
||||
|
||||
check_kicked:
|
||||
lda slugg0_out,X ; only kick if normal
|
||||
cmp #1
|
||||
bne check_attack
|
||||
|
||||
;==================
|
||||
; see if kicked
|
||||
|
||||
lda KICKING
|
||||
beq check_attack
|
||||
|
||||
lda PHYSICIST_X
|
||||
sec
|
||||
sbc slugg0_x,X ; -4 to +4
|
||||
clc
|
||||
adc #4
|
||||
and #$f8
|
||||
bne not_kicked
|
||||
kicked:
|
||||
lda #2
|
||||
sta slugg0_out,X
|
||||
lda #10
|
||||
sta slugg0_dieing,X
|
||||
lda DIRECTION
|
||||
sta slugg0_dir,X
|
||||
|
||||
not_kicked:
|
||||
|
||||
check_attack:
|
||||
;==================
|
||||
; see if attack
|
||||
|
||||
lda slugg0_out,X
|
||||
cmp #1
|
||||
bne no_attack
|
||||
|
||||
lda PHYSICIST_X
|
||||
sec
|
||||
sbc slugg0_x,X ; -2 to +2
|
||||
clc
|
||||
adc #2
|
||||
and #$fc
|
||||
bne no_attack
|
||||
attack:
|
||||
|
||||
;=================
|
||||
; start an attack
|
||||
|
||||
lda #1
|
||||
sta slugg0_attack,X
|
||||
|
||||
lda SLUGDEATH ; don't re-attack if already dead
|
||||
bne no_attack
|
||||
|
||||
lda #$1
|
||||
sta SLUGDEATH
|
||||
lda #0
|
||||
sta SLUGDEATH_PROGRESS
|
||||
|
||||
stx WHICH_SLUG
|
||||
jsr slug_cutscene
|
||||
ldx WHICH_SLUG
|
||||
|
||||
no_attack:
|
||||
inc slugg0_gait,X ; increment slug gait counter
|
||||
|
||||
lda slugg0_gait,X ; only move every 64 frames
|
||||
and #$3f
|
||||
cmp #$00
|
||||
bne slug_no_move
|
||||
|
||||
slug_move:
|
||||
lda slugg0_x,X
|
||||
clc
|
||||
adc slugg0_dir,X
|
||||
sta slugg0_x,X
|
||||
|
||||
slug_check_right:
|
||||
cmp #37
|
||||
bne slug_check_left
|
||||
jmp remove_slug
|
||||
|
||||
slug_check_left:
|
||||
cmp #0
|
||||
bne slug_no_move
|
||||
jmp remove_slug
|
||||
|
||||
slug_no_move:
|
||||
|
||||
|
||||
;===============================
|
||||
;===============================
|
||||
; DRAW SLUG
|
||||
;===============================
|
||||
;===============================
|
||||
|
||||
;==============
|
||||
; if exploding
|
||||
;==============
|
||||
|
||||
lda slugg0_dieing,X
|
||||
beq check_draw_attacking
|
||||
slug_exploding:
|
||||
stx WHICH_SLUG
|
||||
tax ; urgh can't forget tax
|
||||
lda slug_die_progression,X
|
||||
sta INL
|
||||
lda slug_die_progression+1,X
|
||||
sta INH
|
||||
ldx WHICH_SLUG
|
||||
|
||||
bit SPEAKER
|
||||
|
||||
lda FRAMEL
|
||||
and #$f
|
||||
bne no_progress
|
||||
|
||||
bit SPEAKER
|
||||
|
||||
dec slugg0_dieing,X
|
||||
dec slugg0_dieing,X
|
||||
bne no_progress
|
||||
jmp remove_slug
|
||||
|
||||
no_progress:
|
||||
|
||||
jmp slug_selected
|
||||
|
||||
|
||||
;==============
|
||||
; if attacking
|
||||
;==============
|
||||
check_draw_attacking:
|
||||
lda slugg0_attack,X
|
||||
beq slug_normal
|
||||
slug_attacking:
|
||||
|
||||
lda slugg0_gait,X
|
||||
stx WHICH_SLUG
|
||||
and #$70
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tax
|
||||
|
||||
lda slug_attack_progression,X
|
||||
sta INL
|
||||
lda slug_attack_progression+1,X
|
||||
sta INH
|
||||
|
||||
ldx WHICH_SLUG
|
||||
|
||||
jmp slug_selected
|
||||
|
||||
;==============
|
||||
; if normal
|
||||
;==============
|
||||
slug_normal:
|
||||
lda slugg0_gait,X
|
||||
and #$20
|
||||
beq slug_squinched
|
||||
|
||||
slug_flat:
|
||||
lda #<slug1
|
||||
sta INL
|
||||
lda #>slug1
|
||||
sta INH
|
||||
bne slug_selected
|
||||
|
||||
slug_squinched:
|
||||
lda #<slug2
|
||||
sta INL
|
||||
lda #>slug2
|
||||
sta INH
|
||||
|
||||
;================
|
||||
; end slug normal
|
||||
;================
|
||||
|
||||
slug_selected:
|
||||
|
||||
|
||||
lda slugg0_x,X
|
||||
sta XPOS
|
||||
|
||||
lda #30
|
||||
sec
|
||||
sbc EARTH_OFFSET
|
||||
sta YPOS
|
||||
|
||||
lda slugg0_dir,X
|
||||
stx WHICH_SLUG
|
||||
bmi slug_right
|
||||
|
||||
slug_left:
|
||||
jsr put_sprite
|
||||
jmp slug_done
|
||||
|
||||
slug_right:
|
||||
jsr put_sprite_flipped
|
||||
|
||||
slug_done:
|
||||
lda WHICH_SLUG
|
||||
clc
|
||||
adc #6
|
||||
tax
|
||||
stx WHICH_SLUG
|
||||
|
||||
cpx #18
|
||||
beq slug_exit
|
||||
|
||||
jmp draw_slugs_loop
|
||||
|
||||
slug_exit:
|
||||
rts
|
||||
|
||||
remove_slug:
|
||||
lda #0
|
||||
sta slugg0_out,X
|
||||
jmp slug_done
|
||||
|
||||
|
||||
|
||||
|
||||
;=========================================================
|
||||
; gr_copy_to_current, 40x48 version
|
||||
;=========================================================
|
||||
; copy 0x1000 to DRAW_PAGE
|
||||
|
||||
gr_copy_to_current_40:
|
||||
|
||||
lda DRAW_PAGE ; 3
|
||||
clc ; 2
|
||||
adc #$4 ; 2
|
||||
sta gr_copy_line_40+5 ; 4
|
||||
sta gr_copy_line_40+11 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+17 ; 4
|
||||
sta gr_copy_line_40+23 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+29 ; 4
|
||||
sta gr_copy_line_40+35 ; 4
|
||||
adc #$1 ; 2
|
||||
sta gr_copy_line_40+41 ; 4
|
||||
sta gr_copy_line_40+47 ; 4
|
||||
;===========
|
||||
; 45
|
||||
|
||||
ldy #119 ; for early ones, copy 120 bytes ; 2
|
||||
|
||||
gr_copy_line_40:
|
||||
lda $1000,Y ; load a byte (self modified) ; 4
|
||||
sta $400,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1080,Y ; load a byte (self modified) ; 4
|
||||
sta $480,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1100,Y ; load a byte (self modified) ; 4
|
||||
sta $500,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1180,Y ; load a byte (self modified) ; 4
|
||||
sta $580,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1200,Y ; load a byte (self modified) ; 4
|
||||
sta $600,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1280,Y ; load a byte (self modified) ; 4
|
||||
sta $680,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1300,Y ; load a byte (self modified) ; 4
|
||||
sta $700,Y ; store a byte (self modified) ; 5
|
||||
|
||||
lda $1380,Y ; load a byte (self modified) ; 4
|
||||
sta $780,Y ; store a byte (self modified) ; 5
|
||||
|
||||
dey ; decrement pointer ; 2
|
||||
bpl gr_copy_line_40 ; ; 2nt/3
|
||||
|
||||
rts ; 6
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user