mirror of
https://github.com/catseye/SixtyPical.git
synced 2025-01-10 17:31:18 +00:00
Add some demos, one of which works.
This commit is contained in:
parent
61378f5a88
commit
765073f94e
4
eg/char_actor_demo.60p
Normal file
4
eg/char_actor_demo.60p
Normal file
@ -0,0 +1,4 @@
|
||||
assign byte table screen 1024
|
||||
|
||||
assign byte table actor_x 49152
|
||||
assign byte table actor_x 49152
|
54
eg/demo.60pical
Normal file
54
eg/demo.60pical
Normal file
@ -0,0 +1,54 @@
|
||||
assign byte table screen 1024
|
||||
assign byte table screen2 1274
|
||||
assign byte table screen3 1524
|
||||
assign byte table screen4 1774
|
||||
|
||||
assign byte table colormap 55296
|
||||
assign byte table colormap2 55546
|
||||
assign byte table colormap3 55796
|
||||
assign byte table colormap4 56046
|
||||
|
||||
assign byte vic_border 53280
|
||||
assign byte table vic_bg 53281
|
||||
|
||||
assign vector cinv 788
|
||||
reserve vector save_cinv
|
||||
|
||||
routine main {
|
||||
lda #5
|
||||
sta vic_border
|
||||
lda #0
|
||||
sta vic_bg
|
||||
jsr clear_screen
|
||||
sei {
|
||||
copy vector cinv to save_cinv
|
||||
copy routine our_cinv to cinv
|
||||
}
|
||||
clc
|
||||
repeat bcc { }
|
||||
}
|
||||
|
||||
routine our_cinv {
|
||||
inc screen
|
||||
jmp save_cinv
|
||||
}
|
||||
|
||||
routine clear_screen {
|
||||
ldy #0
|
||||
repeat bne {
|
||||
lda #1
|
||||
sta colormap, y
|
||||
sta colormap2, y
|
||||
sta colormap3, y
|
||||
sta colormap4, y
|
||||
|
||||
lda #32
|
||||
sta screen, y
|
||||
sta screen2, y
|
||||
sta screen3, y
|
||||
sta screen4, y
|
||||
|
||||
iny
|
||||
cpy #250
|
||||
}
|
||||
}
|
160
eg/sprite_actor_thing_ugh.60p
Normal file
160
eg/sprite_actor_thing_ugh.60p
Normal file
@ -0,0 +1,160 @@
|
||||
assign byte table actor_0_sprite_x 60
|
||||
assign byte table actor_0_sprite_y 68
|
||||
assign byte table vic_sprite_0_x 53281
|
||||
assign byte table vic_sprite_0_y 53289
|
||||
|
||||
reserve byte actor_msb
|
||||
reserve byte msb_counter
|
||||
|
||||
reserve vector logic_vector
|
||||
|
||||
assign byte vic_sprite_x_msb 55555
|
||||
|
||||
routine main {
|
||||
jsr display_actors
|
||||
}
|
||||
|
||||
routine display_actors {
|
||||
ldy #0
|
||||
ldx #0
|
||||
|
||||
repeat bne {
|
||||
lda actor_0_sprite_x, y
|
||||
sta vic_sprite_0_x, x
|
||||
lda actor_0_sprite_y, y
|
||||
sta vic_sprite_0_y, x
|
||||
|
||||
iny
|
||||
inx
|
||||
inx
|
||||
cpy #8
|
||||
}
|
||||
|
||||
lda actor_msb
|
||||
sta vic_sprite_x_msb
|
||||
}
|
||||
|
||||
routine update_actors {
|
||||
|
||||
lda #1
|
||||
sta msb_counter
|
||||
lda #0
|
||||
sta actor_msb
|
||||
|
||||
ldy #0
|
||||
repeat ... {
|
||||
|
||||
lda actor_0_logic_high, y
|
||||
if bne {
|
||||
sta logic_vector+1
|
||||
lda actor_0_logic_low, y
|
||||
sta logic_vector
|
||||
|
||||
save y
|
||||
jsr logic_vector
|
||||
restore y
|
||||
}
|
||||
|
||||
// update_xvel
|
||||
|
||||
clc
|
||||
lda actor_0_xvel, y
|
||||
adc actor_0_xacc, y
|
||||
cmp #max_vel
|
||||
bcc xvel_within_limit ; branch if accumulator is less
|
||||
cmp #min_vel
|
||||
bcs xvel_within_limit ; branch if accumulator is greater or equal
|
||||
jmp update_xpos
|
||||
|
||||
xvel_within_limit:
|
||||
sta actor_0_xvel, y
|
||||
|
||||
update_xpos:
|
||||
clc
|
||||
lda actor_0_xpos_low, y
|
||||
adc actor_0_xvel, y
|
||||
sta actor_0_xpos_low, y
|
||||
|
||||
lda #0
|
||||
sta sign_extend
|
||||
lda actor_0_xvel, y
|
||||
and #$80
|
||||
beq carry_x
|
||||
dec sign_extend
|
||||
|
||||
carry_x:
|
||||
lda actor_0_xpos_high, y
|
||||
adc sign_extend ; $00, or $ff if xvel < 0
|
||||
sta actor_0_xpos_high, y
|
||||
|
||||
update_yvel:
|
||||
clc
|
||||
lda actor_0_yvel, y
|
||||
adc actor_0_yacc, y
|
||||
cmp #max_vel
|
||||
bcc yvel_within_limit ; branch if accumulator is less
|
||||
cmp #min_vel
|
||||
bcs yvel_within_limit ; branch if accumulator is greater or equal
|
||||
jmp update_ypos
|
||||
|
||||
yvel_within_limit:
|
||||
sta actor_0_yvel, y
|
||||
|
||||
update_ypos:
|
||||
clc
|
||||
lda actor_0_ypos_low, y
|
||||
adc actor_0_yvel, y
|
||||
sta actor_0_ypos_low, y
|
||||
|
||||
lda #0
|
||||
sta sign_extend
|
||||
lda actor_0_yvel, y
|
||||
and #$80
|
||||
beq carry_y
|
||||
dec sign_extend
|
||||
|
||||
carry_y:
|
||||
lda actor_0_ypos_high, y
|
||||
adc sign_extend
|
||||
sta actor_0_ypos_high, y
|
||||
|
||||
precompute_sprite_position:
|
||||
|
||||
lda actor_0_xpos_low, y
|
||||
sta temp_low
|
||||
lda actor_0_xpos_high, y
|
||||
sta temp_high
|
||||
|
||||
jsr shift_temp
|
||||
jsr shift_temp
|
||||
jsr shift_temp
|
||||
sta actor_0_sprite_x, y
|
||||
|
||||
lda temp_high ; calculate the sprite's msb
|
||||
beq advance_msb_counter
|
||||
lda actor_msb
|
||||
ora msb_counter
|
||||
sta actor_msb
|
||||
|
||||
advance_msb_counter:
|
||||
asl msb_counter
|
||||
|
||||
set_sprite_y:
|
||||
lda actor_0_ypos_low, y
|
||||
sta temp_low
|
||||
lda actor_0_ypos_high, y
|
||||
sta temp_high
|
||||
|
||||
jsr shift_temp
|
||||
jsr shift_temp
|
||||
jsr shift_temp
|
||||
sta actor_0_sprite_y, y
|
||||
|
||||
next_actor:
|
||||
cpy #$07
|
||||
beq exit_actor_loop
|
||||
iny
|
||||
jmp update_actor_loop
|
||||
|
||||
exit_actor_loop:
|
||||
rts
|
Loading…
x
Reference in New Issue
Block a user