| ... | ... |
@@ -2,13 +2,13 @@ |
| 2 | 2 |
app/nasu : spritesheet editor |
| 3 | 3 |
|
| 4 | 4 |
arrows - move selection |
| 5 |
+ ctrl+arrows - change page |
|
| 5 | 6 |
left-click - add pixel |
| 6 | 7 |
right-click - remove pixel |
| 7 | 8 |
1 2 3 - select brush |
| 8 | 9 |
|
| 9 | 10 |
TODO: |
| 10 | 11 |
Color selector, RGB sliders |
| 11 |
- Blend selector |
|
| 12 | 12 |
) |
| 13 | 13 |
|
| 14 | 14 |
%RTN { JMP2r }
|
| ... | ... |
@@ -37,9 +37,9 @@ |
| 37 | 37 |
|
| 38 | 38 |
( variables ) |
| 39 | 39 |
|
| 40 |
-;settings { blending 1 depth 1 }
|
|
| 40 |
+;settings { blending 1 depth 1 page 2 }
|
|
| 41 | 41 |
|
| 42 |
-;bankview { x 2 y 2 mode 1 addr 2 }
|
|
| 42 |
+;bankview { x 2 y 2 mode 1 addr 2 selection 1 }
|
|
| 43 | 43 |
;tileview { x 2 y 2 addr 2 }
|
| 44 | 44 |
;blendview { x1 2 y1 2 x2 2 y2 2 }
|
| 45 | 45 |
;rect { x1 2 y1 2 x2 2 y2 2 }
|
| ... | ... |
@@ -70,7 +70,7 @@ |
| 70 | 70 |
|
| 71 | 71 |
~Screen.width 2/ #008a SUB2 =bankview.x |
| 72 | 72 |
~Screen.height 2/ #002f SUB2 =bankview.y |
| 73 |
- BANK =bankview.addr |
|
| 73 |
+ BANK =settings.page |
|
| 74 | 74 |
|
| 75 | 75 |
~Screen.width 2/ #0002 ADD2 =tileview.x |
| 76 | 76 |
~Screen.height 2/ #002f SUB2 =tileview.y |
| ... | ... |
@@ -97,28 +97,46 @@ BRK |
| 97 | 97 |
|
| 98 | 98 |
@on-button ( -> ) |
| 99 | 99 |
|
| 100 |
- ~Controller.button |
|
| 101 |
- DUP #10 EQU ^$no-ctrl-up JNZ |
|
| 102 |
- ~tileview.addr #0080 ADD2 =tileview.addr $no-ctrl-up |
|
| 103 |
- DUP #20 EQU ^$no-ctrl-down JNZ |
|
| 104 |
- ~tileview.addr #0080 SUB2 =tileview.addr $no-ctrl-down |
|
| 105 |
- DUP #40 EQU ^$no-ctrl-left JNZ |
|
| 106 |
- ~tileview.addr 8+ =tileview.addr $no-ctrl-left |
|
| 107 |
- DUP #80 EQU ^$no-ctrl-right JNZ |
|
| 108 |
- ~tileview.addr 8- =tileview.addr $no-ctrl-right |
|
| 109 |
- POP |
|
| 110 |
- ~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr |
|
| 111 |
- |
|
| 112 |
- ~Controller.key #31 LTH ^$skip JNZ |
|
| 113 |
- ~Controller.key #33 GTH ^$skip JNZ |
|
| 114 |
- ( select ) ~Controller.key #31 SUB =bankview.mode |
|
| 115 |
- $skip |
|
| 116 |
- ,redraw JSR2 |
|
| 100 |
+ ( arrow button ) |
|
| 101 |
+ ~Controller.button #00 EQU ,$no-button JNZ2 |
|
| 102 |
+ |
|
| 103 |
+ ~Controller.button #11 NEQ ^$no-pageup JNZ ~settings.page |
|
| 104 |
+ #0800 SUB2 =settings.page ,redraw JSR2 BRK $no-pageup |
|
| 105 |
+ ~Controller.button #21 NEQ ^$no-pagedown JNZ ~settings.page |
|
| 106 |
+ #0800 ADD2 =settings.page ,redraw JSR2 BRK $no-pagedown |
|
| 107 |
+ |
|
| 108 |
+ ~Controller.button #f0 AND |
|
| 109 |
+ DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ |
|
| 110 |
+ ( move ) ~bankview.selection #10 SUB =bankview.selection $no-up |
|
| 111 |
+ DUP #05 SFT #01 AND #01 NEQ ^$no-down JNZ |
|
| 112 |
+ ( move ) ~bankview.selection #10 ADD =bankview.selection $no-down |
|
| 113 |
+ DUP #06 SFT #01 AND #01 NEQ ^$no-left JNZ |
|
| 114 |
+ ( move ) ~bankview.selection #01 SUB =bankview.selection $no-left |
|
| 115 |
+ DUP #07 SFT #01 AND #01 NEQ ^$no-right JNZ |
|
| 116 |
+ ( move ) ~bankview.selection #01 ADD =bankview.selection $no-right |
|
| 117 |
+ POP |
|
| 118 |
+ ~bankview.selection ,select-tile JSR2 |
|
| 119 |
+ |
|
| 120 |
+ $no-button |
|
| 121 |
+ |
|
| 122 |
+ ~Controller.key #00 EQU ^$no-key JNZ |
|
| 123 |
+ ~Controller.key #31 LTH ^$no-number JNZ |
|
| 124 |
+ ~Controller.key #33 GTH ^$no-number JNZ |
|
| 125 |
+ ( select ) ~Controller.key #31 SUB =bankview.mode |
|
| 126 |
+ ,redraw JSR2 |
|
| 127 |
+ $no-number |
|
| 128 |
+ ~Controller.key #20 NEQ ^$no-space JNZ |
|
| 129 |
+ ~settings.depth #00 EQU =settings.depth |
|
| 130 |
+ ,redraw JSR2 |
|
| 131 |
+ $no-space |
|
| 132 |
+ $no-key |
|
| 117 | 133 |
|
| 118 | 134 |
BRK |
| 119 | 135 |
|
| 120 | 136 |
@on-mouse ( -> ) |
| 121 | 137 |
|
| 138 |
+ ,draw-cursor JSR2 |
|
| 139 |
+ |
|
| 122 | 140 |
~Mouse.state #00 EQU ,$click-end JNZ2 |
| 123 | 141 |
|
| 124 | 142 |
( toolbar ) |
| ... | ... |
@@ -130,10 +148,10 @@ BRK |
| 130 | 148 |
( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode |
| 131 | 149 |
$no-brush-click |
| 132 | 150 |
~Mouse.x ~tileview.x SUB2 8/ #000e NEQ2 ^$no-load-click JNZ |
| 133 |
- ( load ) ,filepath1 =File.name #0800 =File.length ~bankview.addr =File.load |
|
| 151 |
+ ( load ) ,filepath1 =File.name #0800 =File.length ~settings.page =File.load |
|
| 134 | 152 |
$no-load-click |
| 135 | 153 |
~Mouse.x ~tileview.x SUB2 8/ #000f NEQ2 ^$no-save-click JNZ |
| 136 |
- ( save ) ,filepath1 =File.name #0800 =File.length ~bankview.addr =File.save |
|
| 154 |
+ ( save ) ,filepath1 =File.name #0800 =File.length ~settings.page =File.save |
|
| 137 | 155 |
$no-save-click |
| 138 | 156 |
~Mouse.x ~bankview.x SUB2 8/ #0005 NEQ2 ^$no-toggle-depth JNZ |
| 139 | 157 |
( toggle ) ~settings.depth #00 EQU =settings.depth |
| ... | ... |
@@ -148,43 +166,9 @@ BRK |
| 148 | 166 |
#0101 EQU2 ,on-touch-blendview JNZ2 |
| 149 | 167 |
|
| 150 | 168 |
( bankview ) |
| 151 |
- |
|
| 152 | 169 |
~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2 |
| 153 | 170 |
~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2 |
| 154 |
- #0101 NEQ2 ,$no-bank-click JNZ2 |
|
| 155 |
- |
|
| 156 |
- ~bankview.mode #01 NEQ ^$not-copy-mode JNZ |
|
| 157 |
- #00 =i |
|
| 158 |
- $copy-loop |
|
| 159 |
- ( load ) ~tileview.addr ~i ADD PEK2 |
|
| 160 |
- ( get touch addr ) |
|
| 161 |
- ~Mouse.x ~bankview.x SUB2 STEP8 |
|
| 162 |
- ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 |
|
| 163 |
- ~bankview.addr ADD2 #00 ~i ADD2 POK2 |
|
| 164 |
- ( incr ) ~i #01 ADD =i |
|
| 165 |
- ~i #08 LTH ^$copy-loop JNZ |
|
| 166 |
- ,redraw JSR2 ,$click-end JMP2 |
|
| 167 |
- $not-copy-mode |
|
| 168 |
- |
|
| 169 |
- ~bankview.mode #02 NEQ ^$not-erase-mode JNZ |
|
| 170 |
- #00 =i |
|
| 171 |
- $erase-loop |
|
| 172 |
- #00 |
|
| 173 |
- ( get touch addr ) |
|
| 174 |
- ~Mouse.x ~bankview.x SUB2 STEP8 |
|
| 175 |
- ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 |
|
| 176 |
- ~bankview.addr ADD2 #00 ~i ADD2 POK2 |
|
| 177 |
- ( incr ) ~i #01 ADD =i |
|
| 178 |
- ~i #08 LTH ^$erase-loop JNZ |
|
| 179 |
- ,redraw JSR2 ,$click-end JMP2 |
|
| 180 |
- $not-erase-mode |
|
| 181 |
- |
|
| 182 |
- ~Mouse.x ~bankview.x SUB2 STEP8 |
|
| 183 |
- ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 |
|
| 184 |
- ~bankview.addr ADD2 =tileview.addr |
|
| 185 |
- ,redraw JSR2 ,$click-end JMP2 |
|
| 186 |
- |
|
| 187 |
- $no-bank-click |
|
| 171 |
+ #0101 EQU2 ,on-touch-bankview JNZ2 |
|
| 188 | 172 |
|
| 189 | 173 |
( tileview ) |
| 190 | 174 |
|
| ... | ... |
@@ -233,7 +217,44 @@ BRK |
| 233 | 217 |
|
| 234 | 218 |
$click-end |
| 235 | 219 |
|
| 236 |
- ,draw-cursor JSR2 |
|
| 220 |
+BRK |
|
| 221 |
+ |
|
| 222 |
+@on-touch-bankview ( -> ) |
|
| 223 |
+ |
|
| 224 |
+ ~bankview.mode #01 NEQ ^$not-copy-mode JNZ |
|
| 225 |
+ #00 =i |
|
| 226 |
+ $copy-loop |
|
| 227 |
+ ( load ) ~tileview.addr ~i ADD PEK2 |
|
| 228 |
+ ( get touch addr ) |
|
| 229 |
+ ~Mouse.x ~bankview.x SUB2 STEP8 |
|
| 230 |
+ ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 |
|
| 231 |
+ ( 2-bit mode ) #00 ~settings.depth #01 ADD MUL2 |
|
| 232 |
+ ~settings.page ADD2 #00 ~i ADD2 POK2 |
|
| 233 |
+ ( incr ) ~i #01 ADD =i |
|
| 234 |
+ ~i #08 LTH ^$copy-loop JNZ |
|
| 235 |
+ ,redraw JSR2 BRK |
|
| 236 |
+ $not-copy-mode |
|
| 237 |
+ |
|
| 238 |
+ ~bankview.mode #02 NEQ ^$not-erase-mode JNZ |
|
| 239 |
+ #00 =i |
|
| 240 |
+ $erase-loop |
|
| 241 |
+ #00 |
|
| 242 |
+ ( get touch addr ) |
|
| 243 |
+ ~Mouse.x ~bankview.x SUB2 STEP8 |
|
| 244 |
+ ~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2 |
|
| 245 |
+ ( 2-bit mode ) #00 ~settings.depth #01 ADD MUL2 |
|
| 246 |
+ ~settings.page ADD2 #00 ~i ADD2 POK2 |
|
| 247 |
+ ( incr ) ~i #01 ADD =i |
|
| 248 |
+ ~i #08 LTH ^$erase-loop JNZ |
|
| 249 |
+ ,redraw JSR2 BRK |
|
| 250 |
+ $not-erase-mode |
|
| 251 |
+ |
|
| 252 |
+ ( select ) |
|
| 253 |
+ |
|
| 254 |
+ ~Mouse.x ~bankview.x SUB2 8/ SWP POP |
|
| 255 |
+ ~Mouse.y ~bankview.y SUB2 8/ SWP POP #40 SFT ADD |
|
| 256 |
+ DUP =bankview.selection |
|
| 257 |
+ ,select-tile JSR2 |
|
| 237 | 258 |
|
| 238 | 259 |
BRK |
| 239 | 260 |
|
| ... | ... |
@@ -247,6 +268,17 @@ BRK |
| 247 | 268 |
|
| 248 | 269 |
BRK |
| 249 | 270 |
|
| 271 |
+@select-tile ( pos -- ) |
|
| 272 |
+ |
|
| 273 |
+ ( x y ) DUP #0f AND SWP #04 SFT |
|
| 274 |
+ ( y ) #10 MOD #10 MUL #00 SWP 8* |
|
| 275 |
+ ( x ) ROT #10 MOD #00 SWP 8* ADD2 |
|
| 276 |
+ ( 2-bit mode ) #00 ~settings.depth #01 ADD MUL2 |
|
| 277 |
+ ( offset ) ~settings.page ADD2 =tileview.addr |
|
| 278 |
+ ,redraw JSR2 |
|
| 279 |
+ |
|
| 280 |
+RTN |
|
| 281 |
+ |
|
| 250 | 282 |
@op_shiftup |
| 251 | 283 |
|
| 252 | 284 |
~tileview.addr PEK2 |
| ... | ... |
@@ -291,7 +323,7 @@ RTN |
| 291 | 323 |
|
| 292 | 324 |
~bankview.x =Screen.x |
| 293 | 325 |
~bankview.y #0010 SUB2 =Screen.y |
| 294 |
- ~bankview.addr ,draw-short JSR2 |
|
| 326 |
+ ~settings.page ,draw-short JSR2 |
|
| 295 | 327 |
|
| 296 | 328 |
( toolbar ) |
| 297 | 329 |
|
| ... | ... |
@@ -335,7 +367,9 @@ RTN |
| 335 | 367 |
( incr ) ~i #01 ADD =i |
| 336 | 368 |
~i #10 LTH ^$guides JNZ |
| 337 | 369 |
|
| 338 |
- ( load ) ~bankview.addr =Screen.addr |
|
| 370 |
+ ( draw page ) |
|
| 371 |
+ |
|
| 372 |
+ ( load ) ~settings.page =Screen.addr |
|
| 339 | 373 |
~bankview.y DUP2 #0080 ADD2 |
| 340 | 374 |
$ver |
| 341 | 375 |
( save ) OVR2 =Screen.y |
| ... | ... |
@@ -417,11 +451,7 @@ RTN |
| 417 | 451 |
#00 =i |
| 418 | 452 |
$bytes |
| 419 | 453 |
~tileview.x #0088 ADD2 =Screen.x |
| 420 |
- ,font_hex #00 ~tileview.addr #00 ~i ADD2 PEK2 #f0 AND #04 SFT #08 MUL ADD2 =Screen.addr |
|
| 421 |
- ( draw ) #22 =Screen.color |
|
| 422 |
- ~Screen.x 8+ =Screen.x |
|
| 423 |
- ,font_hex #00 ~tileview.addr #00 ~i ADD2 PEK2 #0f AND #08 MUL ADD2 =Screen.addr |
|
| 424 |
- ( draw ) #22 =Screen.color |
|
| 454 |
+ ~tileview.addr #00 ~i ADD2 PEK2 ,draw-byte JSR2 |
|
| 425 | 455 |
( incr ) ~i #01 ADD =i |
| 426 | 456 |
( incr ) ~Screen.y 8+ =Screen.y |
| 427 | 457 |
~i #08 LTH ,$bytes JNZ2 |
| ... | ... |
@@ -488,7 +518,14 @@ RTN |
| 488 | 518 |
OVR #20 ADD ~settings.depth #20 MUL ADD =Screen.color |
| 489 | 519 |
SWP #01 ADD SWP |
| 490 | 520 |
DUP2 LTH ^$loop JNZ |
| 491 |
- POP2 |
|
| 521 |
+ POP2 |
|
| 522 |
+ |
|
| 523 |
+ ~blendview.x1 =Screen.x |
|
| 524 |
+ ~blendview.y1 #0010 SUB2 =Screen.y |
|
| 525 |
+ |
|
| 526 |
+ ( get blending ) ~settings.blending |
|
| 527 |
+ ( get depth ) ~settings.depth #20 MUL |
|
| 528 |
+ ( draw ) #20 ADD ADD ,draw-byte JSR2 |
|
| 492 | 529 |
|
| 493 | 530 |
RTN |
| 494 | 531 |
|
| ... | ... |
@@ -512,7 +549,18 @@ RTN |
| 512 | 549 |
|
| 513 | 550 |
RTN |
| 514 | 551 |
|
| 515 |
-@draw-short ( short ) |
|
| 552 |
+@draw-byte ( byte -- ) |
|
| 553 |
+ |
|
| 554 |
+ STH |
|
| 555 |
+ ,font_hex #00 DUPr STHr #f0 AND #04 SFT #08 MUL ADD2 =Screen.addr |
|
| 556 |
+ ( draw ) #22 =Screen.color |
|
| 557 |
+ ~Screen.x 8+ =Screen.x |
|
| 558 |
+ ,font_hex #00 STHr #0f AND #08 MUL ADD2 =Screen.addr |
|
| 559 |
+ ( draw ) #22 =Screen.color |
|
| 560 |
+ |
|
| 561 |
+RTN |
|
| 562 |
+ |
|
| 563 |
+@draw-short ( short -- ) |
|
| 516 | 564 |
|
| 517 | 565 |
=addr |
| 518 | 566 |
,font_hex #00 ,addr PEK2 #f0 AND #04 SFT #08 MUL ADD2 =Screen.addr |