Browse Source

Minor optimizations

main
neauoire 4 years ago
parent
commit
2a81b588ff
  1. 89
      src/main.tal

89
src/main.tal

@ -62,6 +62,9 @@
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%AUTO-X { #01 .Screen/auto DEO }
%AUTO-NONE { #00 .Screen/auto DEO }
( defines )
%HOR { #10 } %VER { #10 }
@ -107,7 +110,7 @@
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ]
|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
@ -121,12 +124,13 @@
@settings
&depth $1 &color $1 &blend $1
&ratio $1 &tool $1 &focus $2
&zoom $1
&zoom $1 &brush $1
@cursor
&x $2 &y $2 &last $1
@selection
&x1 $1 &y1 $1
&x2 $1 &y2 $1
&a $1
@path
&length $1 &name $20
@frame
@ -143,8 +147,7 @@
@zoomview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@tileview
&x1 $2 &y1 $2
&x2 $2 &y2 $2
&width $2 &height $2
&x2 $2 &y2 $2
@nametable
&x $2 &y $2
&x2 $2 &y2 $2
@ -173,16 +176,14 @@
( set defaults )
#0100 .frame/width STZ2
#0080 #0040 ++ .frame/height STZ2
#00c0 .frame/height STZ2
#01 .settings/depth STZ
#01 .settings/color STZ
#81 .settings/blend STZ
#32 .settings/ratio STZ
#01 .settings/tool STZ
BANK-SPRITESHEET .settings/focus STZ2
#0100 .tileview/width STZ2
#0080 .tileview/height STZ2
#00 .settings/brush STZ
#0000 ;select JSR2
.Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 --
.Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 --
@ -442,7 +443,7 @@ BRK
BRK &no-brush-mouse2
DUP2 #0101 !! ,&no-select-mouse1 JCN ( select default )
POP2
;get-tile-addr JSR2 .settings/focus STZ2
;select JSR2
;redraw JSR2
BRK &no-select-mouse1
DUP2 #0110 !! ,&no-select-mouse2 JCN ( select copy )
@ -467,7 +468,7 @@ BRK
.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
DUP .selection/y1 STZ .selection/y2 STZ
;clamp-selection JSR2
.selection LDZ2 GET-ADDR .settings/focus STZ2
.selection LDZ2 ;select JSR2
;redraw JSR2
,&end JMP
&no-down
@ -503,18 +504,17 @@ BRK
( skip ) .Mouse/state DEI #00 ! BRK?
( get touch tile )
.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++ STH2
( look for changes )
( sprite ) STH2kr BANK-NAMETABLE ++ LDA
( color ) STH2kr BANK-COLOR ++ LDA
( sprite ) .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
( color ) .settings/blend LDZ
( stop ) NEQ2 ,&continue JCN POP2r BRK &continue
STH2kr BANK-NAMETABLE ++ LDA
.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
STH2kr BANK-COLOR ++ LDA
.settings/blend LDZ
!! ,&continue JCN
POP2r BRK
&continue
( set sprite )
.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
@ -525,6 +525,7 @@ BRK
STH2r BANK-COLOR ++ STA
;draw-nametable JSR2
SET-STATE
BRK
@ -706,6 +707,14 @@ BRK
( operations )
@select ( x y -- )
DUP2
GET-ADDR .settings/focus STZ2
#40 SFT + .selection/a STZ
RTN
@mod-selection ( x y -- )
DUP
@ -722,7 +731,8 @@ BRK
.selection/y1 LDZ .selection/y2 STZ
&no-y
( focus )
.selection LDZ2 GET-ADDR .settings/focus STZ2
.selection LDZ2 ;select JSR2
;redraw JSR2
RTN
@ -740,7 +750,7 @@ RTN
.selection/y1 LDZ .selection/y2 STZ
&no-y
( focus )
.selection LDZ2 GET-ADDR .settings/focus STZ2
.selection LDZ2 ;select JSR2
;redraw JSR2
RTN
@ -906,20 +916,21 @@ RTN
.settings/zoom LDZ ;draw-tileview-zoom JCN2
VER #00
AUTO-X
#1000
&ver
DUP TOS 8** .tileview/y1 LDZ2 ++ .Screen/y DEO2
HOR #00
.tileview/x1 LDZ2 .Screen/x DEO2
#1000
&hor
DUP TOS 8** .tileview/x1 LDZ2 ++ .Screen/x DEO2
GET-ITER
DUP2 GET-ADDR .Screen/addr DEO2
#0d00 SWP2 ;is-selected JSR2 SWP? POP
#81 + .Screen/sprite DEO
;is-selected JSR2 #0d * #81 + .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
INC GTHk ,&ver JCN
POP2
AUTO-NONE
.workspace-frame #03 ;line-rect JSR2
@ -952,15 +963,21 @@ RTN
@draw-nametable ( -- )
#00
&loop
DUP TOS
DUP2 10MOD2 8** .nametable/x LDZ2 ++ .Screen/x DEO2
DUP2 10// 8** .nametable/y LDZ2 ++ .Screen/y DEO2
DUP2 BANK-NAMETABLE ++ LDA TOS 10** BANK-SPRITESHEET ++ .Screen/addr DEO2
BANK-COLOR ++ LDA .Screen/sprite DEO
INC DUP ,&loop JCN
POP
AUTO-X
#1000
&ver
DUP TOS 8** .nametable/y LDZ2 ++ .Screen/y DEO2
.nametable/x LDZ2 .Screen/x DEO2
#1000
&hor
GET-ITER [ #40 SFT + ] #00 SWP
DUP2 BANK-NAMETABLE ++ LDA TOS 10** BANK-SPRITESHEET ++ .Screen/addr DEO2
BANK-COLOR ++ LDA .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
INC GTHk ,&ver JCN
POP2
AUTO-NONE
RTN
@ -1192,7 +1209,7 @@ RTN
( position )
.dataview/x1 LDZ2 .Screen/x DEO2
.dataview/y2 LDZ2 INC2 .Screen/y DEO2
.settings/focus LDZ2 BANK-SPRITESHEET -- #03 ;draw-short JSR2
.selection/a LDZ #03 ;draw-byte JSR2
( depth1 )
#04 #00

Loading…
Cancel
Save