mirror of
https://github.com/a2-4am/4cade.git
synced 2024-12-28 03:29:59 +00:00
shave some bytes
This commit is contained in:
parent
272c5855ed
commit
e5a6c0ee2f
@ -71,8 +71,8 @@
|
|||||||
src = $00 ; [word][must be at $00] used by drawing routines
|
src = $00 ; [word][must be at $00] used by drawing routines
|
||||||
dst = $02 ; [word] used by drawing routines
|
dst = $02 ; [word] used by drawing routines
|
||||||
box = $04 ; [byte] counter in main loop
|
box = $04 ; [byte] counter in main loop
|
||||||
any = $05 ; [byte] counter in main loop
|
rowcount = $05 ; [byte] used by drawing routines
|
||||||
rowcount = $06 ; [byte] used by drawing routines
|
any = $0D ; [byte][must be at $0D] counter in main loop
|
||||||
BoxStages = $10 ; [$30 bytes] current stage for each box
|
BoxStages = $10 ; [$30 bytes] current stage for each box
|
||||||
hgrhi = $40 ; [$C0 bytes] HGR base addresses
|
hgrhi = $40 ; [$C0 bytes] HGR base addresses
|
||||||
hgrlo = $300 ; [$C0 bytes] HGR base addresses
|
hgrlo = $300 ; [$C0 bytes] HGR base addresses
|
||||||
@ -188,32 +188,32 @@ k_right_mask = 17
|
|||||||
inx
|
inx
|
||||||
bne -
|
bne -
|
||||||
|
|
||||||
+BUILD_HGR_LOOKUP_TABLES hgrlo, hgrhi
|
; X=0 here
|
||||||
|
+BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 hgrlo, hgrhi
|
||||||
|
|
||||||
MainLoop lda #0
|
; any (zero page $0D) was initialized by the BoxStages copy loop
|
||||||
sta any
|
MainLoop ldx #48
|
||||||
ldx #47
|
|
||||||
BoxLoop stx box
|
BoxLoop stx box
|
||||||
lda BoxStages, x ; for each box, get its current stage
|
lda BoxStages-1, x ; for each box, get its current stage
|
||||||
bmi NextBox ; if stage >= $80, nothing to do
|
bmi NextBox ; if stage >= $80, nothing to do
|
||||||
tax
|
tay
|
||||||
lda StagesHi, x
|
lda StagesHi, y
|
||||||
beq NextBox ; if stage's drawing routine is 0, nothing to do
|
beq NextBox ; if stage's drawing routine is 0, nothing to do
|
||||||
sta j+2
|
sta j+2
|
||||||
ldx box
|
lda BoxesX-1, x
|
||||||
lda BoxesX, x
|
ldy BoxesY-1, x ; Y = starting byte offset for this box
|
||||||
ldy BoxesY, x ; Y = starting byte offset for this box
|
|
||||||
tax ; X = starting HGR row for this box
|
tax ; X = starting HGR row for this box
|
||||||
inc any
|
inc any
|
||||||
clc
|
clc
|
||||||
j jsr $FD00 ; [SMC] call drawing routine for this stage
|
j jsr $FD00 ; [SMC] call drawing routine for this stage
|
||||||
NextBox ldx box
|
NextBox ldx box
|
||||||
inc BoxStages, x ; increment every box's stage every time through the loop,
|
inc BoxStages-1, x ; increment every box's stage every time through the loop,
|
||||||
; even if we didn't call a drawing routine
|
; even if we didn't call a drawing routine
|
||||||
dex
|
dex
|
||||||
bpl BoxLoop
|
bne BoxLoop
|
||||||
lda any
|
lda any
|
||||||
beq + ; if we didn't draw anything in any box, we're done
|
beq + ; if we didn't draw anything in any box, we're done
|
||||||
|
stx any ; X=0 here
|
||||||
bit $C000
|
bit $C000
|
||||||
bpl MainLoop
|
bpl MainLoop
|
||||||
+ rts
|
+ rts
|
||||||
@ -465,22 +465,6 @@ OUTER_STAGE
|
|||||||
!byte k_outer_branches
|
!byte k_outer_branches
|
||||||
!byte k_rts
|
!byte k_rts
|
||||||
|
|
||||||
codegen_stage
|
|
||||||
!byte 27
|
|
||||||
codegen_maskindex
|
|
||||||
!byte 0
|
|
||||||
codegen_get_next_token
|
|
||||||
codegen_token_x=*+1
|
|
||||||
ldx #$00
|
|
||||||
codegen_token_src=*+1
|
|
||||||
lda <OUTER_STAGE, x
|
|
||||||
inc <codegen_token_x
|
|
||||||
rts
|
|
||||||
codegen_store_byte
|
|
||||||
!byte $99,$00 ; STA $4400, Y
|
|
||||||
codegen_dst
|
|
||||||
!byte copy01
|
|
||||||
rts
|
|
||||||
EdgeRightMasks
|
EdgeRightMasks
|
||||||
!byte %10000001
|
!byte %10000001
|
||||||
!byte %10000011
|
!byte %10000011
|
||||||
@ -511,6 +495,24 @@ EdgeLeftMasks
|
|||||||
!byte %11111100
|
!byte %11111100
|
||||||
!byte %11111110
|
!byte %11111110
|
||||||
!byte %11111111
|
!byte %11111111
|
||||||
|
|
||||||
|
codegen_stage
|
||||||
|
!byte 27
|
||||||
|
codegen_maskindex
|
||||||
|
!byte 0
|
||||||
|
codegen_get_next_token
|
||||||
|
codegen_token_x=*+1
|
||||||
|
ldx #$00
|
||||||
|
codegen_token_src=*+1
|
||||||
|
lda <OUTER_STAGE, x
|
||||||
|
inc <codegen_token_x
|
||||||
|
rts
|
||||||
|
codegen_store_byte
|
||||||
|
!byte $99,$00 ; STA $4400, Y
|
||||||
|
; note: this 0 byte is later copied to zero page $0D (any) and used in MainLoop
|
||||||
|
codegen_dst
|
||||||
|
!byte copy01
|
||||||
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
BoxInitialStages
|
BoxInitialStages
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
; https://groups.google.com/d/msg/comp.sys.apple2/v2HOfHOmeNQ/zD76fJg_BAAJ
|
; https://groups.google.com/d/msg/comp.sys.apple2/v2HOfHOmeNQ/zD76fJg_BAAJ
|
||||||
!macro BUILD_HGR_LOOKUP_TABLES .hgrlo, .hgr1hi {
|
!macro BUILD_HGR_LOOKUP_TABLES .hgrlo, .hgr1hi {
|
||||||
ldx #0
|
ldx #0
|
||||||
|
+BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 .hgrlo, .hgr1hi
|
||||||
|
}
|
||||||
|
|
||||||
|
!macro BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 .hgrlo, .hgr1hi {
|
||||||
- txa
|
- txa
|
||||||
and #$F8
|
and #$F8
|
||||||
bpl +
|
bpl +
|
||||||
|
Loading…
Reference in New Issue
Block a user