Browse Source

Progress on nametable editor

main
neauoire 4 years ago
parent
commit
302fda3867
  1. 111
      src/main.tal

111
src/main.tal

@ -36,7 +36,7 @@
%2** { #10 SFT2 } %2// { #01 SFT2 }
%4// { #02 SFT2 }
%8** { #30 SFT2 } %8// { #03 SFT2 }
%10** { #40 SFT2 }
%10** { #40 SFT2 } %10// { #04 SFT2 }
%20** { #50 SFT2 }
%100** { #80 SFT2 }
%200** { #90 SFT2 }
@ -49,6 +49,7 @@
%20MOD { #1f AND }
%8MOD2 { #0007 AND2 }
%100MOD2 { #00ff AND2 }
%10MOD2 { #000f AND2 }
%TOS { #00 SWP }
%SWP2? { #01 JCN SWP2 }
@ -64,21 +65,29 @@
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }
%HOR { #20 } %VER { #10 }
%WIDTH { #0100 }
%LENGTH { #2000 }
%HOR { #10 } %VER { #10 }
%LENGTH { #1000 }
(
8000-9000 : spritesheet
9000-9100 : tile
9100-9200 : color )
%BANK-SPRITESHEET { #8000 }
%BANK-NAMETABLE { #9000 }
%BANK-PAINT { #9100 }
( todo )
%DATA-CLIP { #6000 }
%BANK { #2000 }
%BANK-TEMP { #4000 }
%GET-HEX-ADDR { TOS 8** ;font-hex ++ .Screen/addr DEO2 }
%GET-COLOR { .settings/color LDZ STHk 2/ + DEI #01 STHr #01 AND - 4* SFT #0f AND }
%GET-POSITION { .settings/focus LDZ2 BANK -- DUP2 2// 100MOD2 SWP2 WIDTH 2** DIV2 8** }
%GET-POSITION { .settings/focus LDZ2 BANK-SPRITESHEET -- DUP2 2// 100MOD2 SWP2 #0080 2** DIV2 8** }
%ADD-POSITIONS { ROT2 ++ ROT2 ROT2 ++ SWP2 }
%RELEASE-MOUSE { #00 .Mouse/state DEO }
%RESET-SELECTION { .selection/x1 LDZ2 .selection/x2 STZ2 }
%GET-ADDR { TOS 20** ROT TOS ++ 10** BANK ++ } ( x y -- addr* )
%GET-ADDR { TOS 10** ROT TOS ++ 10** BANK-SPRITESHEET ++ } ( x y -- addr* )
%SET-STATE { #01 .state/changed STZ ;draw-state JSR2 }
%RESET-STATE { #00 .state/changed STZ ;draw-state JSR2 }
@ -135,7 +144,10 @@
&x1 $2 &y1 $2
&x2 $2 &y2 $2
&width $2 &height $2
@tileview-frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@nametable
&x $2 &y $2
&x2 $2 &y2 $2
@workspace-frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@zoomview-frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
( program )
@ -166,7 +178,7 @@
#01 .settings/blending STZ
#32 .settings/ratio STZ
#01 .settings/tool STZ
BANK .settings/focus STZ2
BANK-SPRITESHEET .settings/focus STZ2
#0100 .tileview/width STZ2
#0080 .tileview/height STZ2
@ -176,19 +188,19 @@
.frame/width LDZ2 .frame/height LDZ2
SIZE-TO-RECT ;frame SET-RECT
.frame/x1 LDZ2 .frame/y1 LDZ2 #0030 ++ #0100 #0080 SIZE-TO-RECT ;tileview SET-RECT
.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ++ HOR TOS 8** #0080 SIZE-TO-RECT ;tileview SET-RECT
.frame/x1 LDZ2 #0082 ++ .frame/y1 LDZ2 #0030 ++ #007f #007f SIZE-TO-RECT ;nametable SET-RECT
.tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ++ #0100 #0008 SIZE-TO-RECT ;toolview SET-RECT
.frame/x1 LDZ2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
.frame/x1 LDZ2 #0030 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
.frame/x1 LDZ2 #0060 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
.frame/x1 LDZ2 #0090 ++ .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;zoomview SET-RECT
.frame/x1 LDZ2 #00c0 ++ .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT
.tileview/x1 LDZ2 #0001 -- .tileview-frame/x1 STZ2
.tileview/y1 LDZ2 #0001 -- .tileview-frame/y1 STZ2
.tileview/x2 LDZ2 INC2 .tileview-frame/x2 STZ2
.tileview/y2 LDZ2 INC2 .tileview-frame/y2 STZ2
.frame/x1 LDZ2 #0002 -- .workspace-frame/x1 STZ2
.tileview/y1 LDZ2 #0001 -- .workspace-frame/y1 STZ2
.frame/x2 LDZ2 #0002 ++ .workspace-frame/x2 STZ2
.tileview/y2 LDZ2 INC2 .workspace-frame/y2 STZ2
.zoomview/x1 LDZ2 #0001 -- .zoomview-frame/x1 STZ2
.zoomview/y1 LDZ2 #0001 -- .zoomview-frame/y1 STZ2
@ -385,7 +397,8 @@ BRK
.Mouse/x DEI2 .Mouse/y DEI2 .tileview ;within-rect JSR2
;on-touch-tileview JCN2
.Mouse/x DEI2 .Mouse/y DEI2 .nametable ;within-rect JSR2
;on-touch-nametable JCN2
.Mouse/x DEI2 .Mouse/y DEI2 .toolview ;within-rect JSR2
;on-touch-toolview JCN2
.Mouse/x DEI2 .Mouse/y DEI2 .blendview ;within-rect JSR2
@ -483,6 +496,19 @@ BRK
BRK
@on-touch-nametable ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
#01
.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++
BANK-NAMETABLE ++ STA
;redraw JSR2
BRK
@on-touch-toolview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
@ -657,8 +683,8 @@ BRK
.selection/y2 LDZ + 10MOD .selection/y2 STZ
.selection/y1 LDZ + 10MOD .selection/y1 STZ
DUP
.selection/x2 LDZ + 20MOD .selection/x2 STZ
.selection/x1 LDZ + 20MOD .selection/x1 STZ
.selection/x2 LDZ + 10MOD .selection/x2 STZ
.selection/x1 LDZ + 10MOD .selection/x1 STZ
( clamp )
.selection/x2 LDZ .selection/x1 LDZ GTH ,&no-x JCN
.selection/x1 LDZ .selection/x2 STZ
@ -675,7 +701,7 @@ RTN
@scale-selection ( x y -- )
.selection/y2 LDZ + 10MOD .selection/y2 STZ
.selection/x2 LDZ + 20MOD .selection/x2 STZ
.selection/x2 LDZ + 10MOD .selection/x2 STZ
( clamp )
.selection/x2 LDZ .selection/x1 LDZ GTH ,&no-x JCN
@ -828,8 +854,11 @@ RTN
;draw-dataview JSR2
;draw-preview JSR2
;draw-tileview JSR2
;draw-nametable JSR2
;draw-zoomview JSR2
.frame/x1 LDZ2 #0080 ++ .tileview/y1 LDZ2 .tileview/y2 LDZ2 #03 ;line-ver JSR2
RTN
@is-selected ( x y -- flag )
@ -865,10 +894,28 @@ RTN
INC GTHk ,&ver JCN
POP2
.tileview-frame #03 ;line-rect JSR2
.workspace-frame #03 ;line-rect JSR2
RTN
@draw-nametable ( -- )
#00
&loop
DUP TOS 10MOD2 8** .nametable/x LDZ2 ++ .Screen/x DEO2
DUP TOS 10// 8** .nametable/y LDZ2 ++ .Screen/y DEO2
DUP TOS BANK-NAMETABLE ++ LDA TOS 10** BANK-SPRITESHEET ++ .Screen/addr DEO2
#81 .Screen/sprite DEO
INC DUP ,&loop JCN
POP
RTN
@test
ffff ffff ffff ffff
ffff ffff ffff ffff
@draw-tileview-zoom ( -- )
( find focus ) GET-POSITION STH2 STH2
@ -934,7 +981,7 @@ RTN
( get tile )
SWP2 8// 200** ++
SWP2 STEP8 2** ++
BANK ++
BANK-SPRITESHEET ++
RTN
@ -971,7 +1018,7 @@ RTN
STEP8 100** 4// SWP2
STEP8 2** ++
BANK ++
BANK-SPRITESHEET ++
RTN
@ -1128,7 +1175,7 @@ RTN
( position )
.dataview/x1 LDZ2 .Screen/x DEO2
.dataview/y2 LDZ2 INC2 .Screen/y DEO2
.settings/focus LDZ2 BANK -- #02 ;draw-short JSR2
.settings/focus LDZ2 BANK-SPRITESHEET -- #02 ;draw-short JSR2
( depth1 )
#04 #00
@ -1250,7 +1297,7 @@ RTN
@new-file ( default* -- )
BANK LENGTH ;clear JSR2
BANK-SPRITESHEET LENGTH ;clear JSR2
STH2
#0c #00
&loop
@ -1268,10 +1315,10 @@ RTN
( icn mode ) .Controller/button DEI #02 AND ,load-file-icn JCN
BANK LENGTH ;clear JSR2
BANK-SPRITESHEET LENGTH ;clear JSR2
;path/name .File/name DEO2
#2000 .File/length DEO2
BANK .File/load DEO2
LENGTH .File/length DEO2
BANK-SPRITESHEET .File/load DEO2
RESET-STATE
;redraw JSR2
@ -1279,16 +1326,16 @@ RTN
@load-file-icn ( -- )
BANK LENGTH ;clear JSR2
BANK-SPRITESHEET LENGTH ;clear JSR2
;path/name .File/name DEO2
#2000 .File/length DEO2
LENGTH .File/length DEO2
BANK-TEMP .File/load DEO2
RESET-STATE
#1000 #0000
&loop
DUP2 BANK-TEMP ++ LDA STH
DUP2k [ 8// 8** ++ ] BANK ++ STHr ROT ROT STA
DUP2k [ 8// 8** ++ ] BANK-SPRITESHEET ++ STHr ROT ROT STA
INC2 GTH2k ,&loop JCN
POP2 POP2
;redraw JSR2
@ -1298,8 +1345,8 @@ RTN
@save-file ( -- )
;path/name .File/name DEO2
#2000 .File/length DEO2
BANK .File/save DEO2
LENGTH .File/length DEO2
BANK-SPRITESHEET .File/save DEO2
RESET-STATE
;save-theme JSR2

Loading…
Cancel
Save