| ... | ... |
@@ -8,6 +8,8 @@ |
| 8 | 8 |
1 2 3 - select brush |
| 9 | 9 |
|
| 10 | 10 |
TODO: |
| 11 |
+ Copy in 2 bits mode, copies 2 tiles |
|
| 12 |
+ Modify up to 4 pages |
|
| 11 | 13 |
Save/load/rename |
| 12 | 14 |
Select paint color for 2-bit mode |
| 13 | 15 |
) |
| ... | ... |
@@ -49,11 +51,11 @@ |
| 49 | 51 |
|
| 50 | 52 |
|0000 |
| 51 | 53 |
|
| 52 |
-@settings [ &blending $1 &depth $1 &brush $1 &page $2 ] |
|
| 54 |
+@settings [ &blending $1 &depth $1 &brush $1 &page $2 &tile $2 ] |
|
| 53 | 55 |
|
| 54 | 56 |
@frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 &width $2 &height $2 ] |
| 55 | 57 |
@bankview [ &x $2 &y $2 &mode $1 &selection $1 ] |
| 56 |
-@tileview [ &x $2 &y $2 &addr $2 ] |
|
| 58 |
+@tileview [ &x $2 &y $2 ] |
|
| 57 | 59 |
@colorview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] |
| 58 | 60 |
@blendview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] |
| 59 | 61 |
@dataview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ] |
| ... | ... |
@@ -90,7 +92,7 @@ |
| 90 | 92 |
|
| 91 | 93 |
.frame/x2 PEK2 #0098 SUB2 .tileview/x POK2 |
| 92 | 94 |
.frame/y1 PEK2 .tileview/y POK2 |
| 93 |
- BANK #0448 ADD2 .tileview/addr POK2 |
|
| 95 |
+ BANK #0448 ADD2 .settings/tile POK2 |
|
| 94 | 96 |
|
| 95 | 97 |
.frame/x1 PEK2 #0010 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT |
| 96 | 98 |
.frame/x1 PEK2 #0038 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT |
| ... | ... |
@@ -204,7 +206,7 @@ BRK |
| 204 | 206 |
.bankview/mode PEK #01 NEQ ,¬-copy-mode JNZ |
| 205 | 207 |
#00 .i POK |
| 206 | 208 |
©-loop |
| 207 |
- ( load ) .tileview/addr PEK2 .i PEK ADD GET |
|
| 209 |
+ ( load ) .settings/tile PEK2 .i PEK ADD GET |
|
| 208 | 210 |
( get touch addr ) |
| 209 | 211 |
.Mouse/x DEI2 .bankview/x PEK2 SUB2 STEP8 |
| 210 | 212 |
.Mouse/y DEI2 .bankview/y PEK2 SUB2 STEP8 #0010 MUL2 ADD2 |
| ... | ... |
@@ -243,7 +245,7 @@ BRK |
| 243 | 245 |
.Mouse/x DEI2 .tileview/x PEK2 SUB2 STEP8 #0040 DIV2 |
| 244 | 246 |
.Mouse/y DEI2 .tileview/y PEK2 SUB2 STEP8 #0040 DIV2 2* ADD2 |
| 245 | 247 |
8* |
| 246 |
- .tileview/addr PEK2 ADD2 .addr POK2 ( addr offset ) |
|
| 248 |
+ .settings/tile PEK2 ADD2 .addr POK2 ( addr offset ) |
|
| 247 | 249 |
.Mouse/x DEI2 .tileview/x PEK2 SUB2 .Mouse/x DEI2 .tileview/x PEK2 SUB2 #0040 DIV2 #0040 MUL2 SUB2 .pos/x POK2 |
| 248 | 250 |
.Mouse/y DEI2 .tileview/y PEK2 SUB2 .Mouse/y DEI2 .tileview/y PEK2 SUB2 #0040 DIV2 #0040 MUL2 SUB2 .pos/y POK2 |
| 249 | 251 |
.Mouse/state DEI #10 NEQ ,&no-erase-mode JNZ |
| ... | ... |
@@ -288,17 +290,17 @@ BRK |
| 288 | 290 |
BRK |
| 289 | 291 |
|
| 290 | 292 |
@on-touch-colorview ( -> ) |
| 291 |
- |
|
| 293 |
+ |
|
| 292 | 294 |
( channel ) .Mouse/y DEI2 .colorview/y1 PEK2 SUB2 8/ SWP POP STH |
| 293 | 295 |
( rgb ) .Mouse/x DEI2 .colorview/x1 PEK2 SUB2 8/ SWP POP |
| 294 | 296 |
DUP #00 NEQ ,&no-brush JNZ |
| 295 | 297 |
DUPr STHr .settings/brush POK &no-brush |
| 296 | 298 |
DUP #01 NEQ ,&no-red JNZ |
| 297 |
- DUPr STHr ;System/r ;set-color JSR2 &no-red |
|
| 299 |
+ DUPr STHr .System/r ;set-color JSR2 &no-red |
|
| 298 | 300 |
DUP #02 NEQ ,&no-green JNZ |
| 299 |
- DUPr STHr ;System/g ;set-color JSR2 &no-green |
|
| 301 |
+ DUPr STHr .System/g ;set-color JSR2 &no-green |
|
| 300 | 302 |
DUP #03 NEQ ,&no-blue JNZ |
| 301 |
- DUPr STHr ;System/b ;set-color JSR2 &no-blue |
|
| 303 |
+ DUPr STHr .System/b ;set-color JSR2 &no-blue |
|
| 302 | 304 |
POP POPr |
| 303 | 305 |
( release ) #00 .Mouse/state DEO |
| 304 | 306 |
;redraw JSR2 |
| ... | ... |
@@ -307,29 +309,29 @@ BRK |
| 307 | 309 |
|
| 308 | 310 |
@set-color ( color rgb -- ) |
| 309 | 311 |
|
| 310 |
- STH2 |
|
| 312 |
+ STH |
|
| 311 | 313 |
DUP #00 NEQ ,&no-red0 JNZ |
| 312 |
- DUP2r STH2r GET DUP #04 SFT #01 ADD |
|
| 314 |
+ DUPr STHr DEI DUP #04 SFT #01 ADD |
|
| 313 | 315 |
( add/sub ) .Mouse/state DEI #10 EQU #fe MUL ADD |
| 314 |
- ( resume ) #40 SFT SWP #0f AND ADD DUP2r STH2r PUT |
|
| 316 |
+ ( resume ) #40 SFT SWP #0f AND ADD DUPr STHr DEO |
|
| 315 | 317 |
&no-red0 |
| 316 | 318 |
DUP #01 NEQ ,&no-red1 JNZ |
| 317 |
- DUP2r STH2r GET DUP #0f AND #01 ADD |
|
| 319 |
+ DUPr STHr DEI DUP #0f AND #01 ADD |
|
| 318 | 320 |
( add/sub ) .Mouse/state DEI #10 EQU #fe MUL ADD |
| 319 |
- ( resume ) #0f AND SWP #f0 AND ADD DUP2r STH2r PUT |
|
| 321 |
+ ( resume ) #0f AND SWP #f0 AND ADD DUPr STHr DEO |
|
| 320 | 322 |
&no-red1 |
| 321 | 323 |
DUP #02 NEQ ,&no-red2 JNZ |
| 322 |
- DUP2r STH2r #0001 ADD2 GET DUP #04 SFT #01 ADD |
|
| 324 |
+ DUPr STHr #01 ADD DEI DUP #04 SFT #01 ADD |
|
| 323 | 325 |
( add/sub ) .Mouse/state DEI #10 EQU #fe MUL ADD |
| 324 |
- ( resume ) #40 SFT SWP #0f AND ADD DUP2r STH2r #0001 ADD2 PUT |
|
| 326 |
+ ( resume ) #40 SFT SWP #0f AND ADD DUPr STHr #01 ADD DEO |
|
| 325 | 327 |
&no-red2 |
| 326 | 328 |
DUP #03 NEQ ,&no-red3 JNZ |
| 327 |
- DUP2r STH2r #0001 ADD2 GET DUP #0f AND #01 ADD |
|
| 329 |
+ DUPr STHr #01 ADD DEI DUP #0f AND #01 ADD |
|
| 328 | 330 |
( add/sub ) .Mouse/state DEI #10 EQU #fe MUL ADD |
| 329 |
- ( resume ) #0f AND SWP #f0 AND ADD DUP2r STH2r #0001 ADD2 PUT |
|
| 331 |
+ ( resume ) #0f AND SWP #f0 AND ADD DUPr STHr #01 ADD DEO |
|
| 330 | 332 |
&no-red3 |
| 331 | 333 |
POP |
| 332 |
- POP2r |
|
| 334 |
+ POPr |
|
| 333 | 335 |
|
| 334 | 336 |
RTN |
| 335 | 337 |
|
| ... | ... |
@@ -339,7 +341,7 @@ RTN |
| 339 | 341 |
( y ) #10 MOD #10 MUL #00 SWP 8* |
| 340 | 342 |
( x ) ROT #10 MOD #00 SWP 8* ADD2 |
| 341 | 343 |
( 2-bit mode ) #00 .settings/depth PEK #01 ADD MUL2 |
| 342 |
- ( offset ) .settings/page PEK2 ADD2 .tileview/addr POK2 |
|
| 344 |
+ ( offset ) .settings/page PEK2 ADD2 .settings/tile POK2 |
|
| 343 | 345 |
;redraw JSR2 |
| 344 | 346 |
|
| 345 | 347 |
RTN |
| ... | ... |
@@ -354,29 +356,29 @@ RTN |
| 354 | 356 |
|
| 355 | 357 |
@op_shiftup |
| 356 | 358 |
|
| 357 |
- .tileview/addr PEK2 GET |
|
| 358 |
- .tileview/addr PEK2 #0001 ADD2 GET .tileview/addr PEK2 PUT |
|
| 359 |
- .tileview/addr PEK2 #0002 ADD2 GET .tileview/addr PEK2 #0001 ADD2 PUT |
|
| 360 |
- .tileview/addr PEK2 #0003 ADD2 GET .tileview/addr PEK2 #0002 ADD2 PUT |
|
| 361 |
- .tileview/addr PEK2 #0004 ADD2 GET .tileview/addr PEK2 #0003 ADD2 PUT |
|
| 362 |
- .tileview/addr PEK2 #0005 ADD2 GET .tileview/addr PEK2 #0004 ADD2 PUT |
|
| 363 |
- .tileview/addr PEK2 #0006 ADD2 GET .tileview/addr PEK2 #0005 ADD2 PUT |
|
| 364 |
- .tileview/addr PEK2 #0007 ADD2 GET .tileview/addr PEK2 #0006 ADD2 PUT |
|
| 365 |
- .tileview/addr PEK2 #0007 ADD2 PUT |
|
| 359 |
+ .settings/tile PEK2 GET |
|
| 360 |
+ .settings/tile PEK2 #0001 ADD2 GET .settings/tile PEK2 PUT |
|
| 361 |
+ .settings/tile PEK2 #0002 ADD2 GET .settings/tile PEK2 #0001 ADD2 PUT |
|
| 362 |
+ .settings/tile PEK2 #0003 ADD2 GET .settings/tile PEK2 #0002 ADD2 PUT |
|
| 363 |
+ .settings/tile PEK2 #0004 ADD2 GET .settings/tile PEK2 #0003 ADD2 PUT |
|
| 364 |
+ .settings/tile PEK2 #0005 ADD2 GET .settings/tile PEK2 #0004 ADD2 PUT |
|
| 365 |
+ .settings/tile PEK2 #0006 ADD2 GET .settings/tile PEK2 #0005 ADD2 PUT |
|
| 366 |
+ .settings/tile PEK2 #0007 ADD2 GET .settings/tile PEK2 #0006 ADD2 PUT |
|
| 367 |
+ .settings/tile PEK2 #0007 ADD2 PUT |
|
| 366 | 368 |
|
| 367 | 369 |
RTN |
| 368 | 370 |
|
| 369 | 371 |
@op_shiftdown |
| 370 | 372 |
|
| 371 |
- .tileview/addr PEK2 #0007 ADD2 GET |
|
| 372 |
- .tileview/addr PEK2 #0006 ADD2 GET .tileview/addr PEK2 #0007 ADD2 PUT |
|
| 373 |
- .tileview/addr PEK2 #0005 ADD2 GET .tileview/addr PEK2 #0006 ADD2 PUT |
|
| 374 |
- .tileview/addr PEK2 #0004 ADD2 GET .tileview/addr PEK2 #0005 ADD2 PUT |
|
| 375 |
- .tileview/addr PEK2 #0003 ADD2 GET .tileview/addr PEK2 #0004 ADD2 PUT |
|
| 376 |
- .tileview/addr PEK2 #0002 ADD2 GET .tileview/addr PEK2 #0003 ADD2 PUT |
|
| 377 |
- .tileview/addr PEK2 #0001 ADD2 GET .tileview/addr PEK2 #0002 ADD2 PUT |
|
| 378 |
- .tileview/addr PEK2 GET .tileview/addr PEK2 #0001 ADD2 PUT |
|
| 379 |
- .tileview/addr PEK2 PUT |
|
| 373 |
+ .settings/tile PEK2 #0007 ADD2 GET |
|
| 374 |
+ .settings/tile PEK2 #0006 ADD2 GET .settings/tile PEK2 #0007 ADD2 PUT |
|
| 375 |
+ .settings/tile PEK2 #0005 ADD2 GET .settings/tile PEK2 #0006 ADD2 PUT |
|
| 376 |
+ .settings/tile PEK2 #0004 ADD2 GET .settings/tile PEK2 #0005 ADD2 PUT |
|
| 377 |
+ .settings/tile PEK2 #0003 ADD2 GET .settings/tile PEK2 #0004 ADD2 PUT |
|
| 378 |
+ .settings/tile PEK2 #0002 ADD2 GET .settings/tile PEK2 #0003 ADD2 PUT |
|
| 379 |
+ .settings/tile PEK2 #0001 ADD2 GET .settings/tile PEK2 #0002 ADD2 PUT |
|
| 380 |
+ .settings/tile PEK2 GET .settings/tile PEK2 #0001 ADD2 PUT |
|
| 381 |
+ .settings/tile PEK2 PUT |
|
| 380 | 382 |
|
| 381 | 383 |
RTN |
| 382 | 384 |
|
| ... | ... |
@@ -443,7 +445,7 @@ RTN |
| 443 | 445 |
.bankview/x PEK2 DUP2 #0080 ADD2 |
| 444 | 446 |
&hor |
| 445 | 447 |
( save ) OVR2 .Screen/x DEO2 |
| 446 |
- ( get selected ) .Screen/addr DEI2 .tileview/addr PEK2 EQU2 |
|
| 448 |
+ ( get selected ) .Screen/addr DEI2 .settings/tile PEK2 EQU2 |
|
| 447 | 449 |
( get blending ) .settings/blending PEK |
| 448 | 450 |
( get depth ) .settings/depth PEK #20 MUL |
| 449 | 451 |
( draw ) #20 ADD ADD ADD .Screen/color DEO |
| ... | ... |
@@ -463,7 +465,7 @@ RTN |
| 463 | 465 |
|
| 464 | 466 |
.tileview/x PEK2 #0028 ADD2 .Screen/x DEO2 |
| 465 | 467 |
.tileview/y PEK2 #0010 SUB2 .Screen/y DEO2 |
| 466 |
- .tileview/addr PEK2 .Screen/addr DEO2 |
|
| 468 |
+ .settings/tile PEK2 .Screen/addr DEO2 |
|
| 467 | 469 |
|
| 468 | 470 |
( get blending ) .settings/blending PEK |
| 469 | 471 |
( get depth ) .settings/depth PEK #20 MUL |
| ... | ... |
@@ -473,28 +475,28 @@ RTN |
| 473 | 475 |
|
| 474 | 476 |
.tileview/x PEK2 .Screen/x DEO2 |
| 475 | 477 |
.tileview/y PEK2 #0010 SUB2 .Screen/y DEO2 |
| 476 |
- .tileview/addr PEK2 ;draw-short JSR2 |
|
| 478 |
+ .settings/tile PEK2 ;draw-short JSR2 |
|
| 477 | 479 |
|
| 478 | 480 |
( body ) |
| 479 | 481 |
|
| 480 | 482 |
.tileview/x PEK2 .Screen/x DEO2 |
| 481 | 483 |
.tileview/y PEK2 .Screen/y DEO2 |
| 482 |
- .tileview/addr PEK2 .tileview/addr POK2 |
|
| 484 |
+ .settings/tile PEK2 .settings/tile POK2 |
|
| 483 | 485 |
;draw-tileview-icn JSR2 |
| 484 | 486 |
|
| 485 | 487 |
.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2 |
| 486 | 488 |
.tileview/y PEK2 .Screen/y DEO2 |
| 487 |
- .tileview/addr PEK2 8+ .tileview/addr POK2 |
|
| 489 |
+ .settings/tile PEK2 8+ .settings/tile POK2 |
|
| 488 | 490 |
;draw-tileview-icn JSR2 |
| 489 | 491 |
|
| 490 | 492 |
.tileview/x PEK2 .Screen/x DEO2 |
| 491 | 493 |
.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2 |
| 492 |
- .tileview/addr PEK2 8+ .tileview/addr POK2 |
|
| 494 |
+ .settings/tile PEK2 8+ .settings/tile POK2 |
|
| 493 | 495 |
;draw-tileview-icn JSR2 |
| 494 | 496 |
|
| 495 | 497 |
.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2 |
| 496 | 498 |
.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2 |
| 497 |
- .tileview/addr PEK2 8+ .tileview/addr POK2 |
|
| 499 |
+ .settings/tile PEK2 8+ .settings/tile POK2 |
|
| 498 | 500 |
;draw-tileview-icn JSR2 |
| 499 | 501 |
|
| 500 | 502 |
( line hor ) |
| ... | ... |
@@ -513,7 +515,7 @@ RTN |
| 513 | 515 |
( incr ) .Screen/y DEI2 #0002 ADD2 .Screen/y DEO2 |
| 514 | 516 |
.Screen/y DEI2 .tileview/y PEK2 #0081 ADD2 LTH2 ,&line-ver JNZ |
| 515 | 517 |
|
| 516 |
- ( rewind ) .tileview/addr PEK2 #0018 SUB2 .tileview/addr POK2 |
|
| 518 |
+ ( rewind ) .settings/tile PEK2 #0018 SUB2 .settings/tile POK2 |
|
| 517 | 519 |
|
| 518 | 520 |
RTN |
| 519 | 521 |
|
| ... | ... |
@@ -525,7 +527,7 @@ RTN |
| 525 | 527 |
&hor |
| 526 | 528 |
( get bit ) |
| 527 | 529 |
;blank_icn #00 |
| 528 |
- .tileview/addr PEK2 #00 .pt/y PEK ADD2 GET #07 .pt/x PEK SUB SFT #01 AND ( get bit ) |
|
| 530 |
+ .settings/tile PEK2 #00 .pt/y PEK ADD2 GET #07 .pt/x PEK SUB SFT #01 AND ( get bit ) |
|
| 529 | 531 |
8* ADD2 .Screen/addr DEO2 ( add *8 ) |
| 530 | 532 |
( draw ) #21 .Screen/color DEO |
| 531 | 533 |
( incr ) .Screen/x DEI2 8+ .Screen/x DEO2 |
| ... | ... |
@@ -542,7 +544,7 @@ RTN |
| 542 | 544 |
|
| 543 | 545 |
.blendview/x1 PEK2 #0002 SUB2 .blendview/y1 PEK2 #0002 SUB2 .blendview/x2 PEK2 #0001 ADD2 .blendview/y2 PEK2 #0001 ADD2 #03 ;line-rect JSR2 |
| 544 | 546 |
|
| 545 |
- .tileview/addr PEK2 .Screen/addr DEO2 |
|
| 547 |
+ .settings/tile PEK2 .Screen/addr DEO2 |
|
| 546 | 548 |
#00 #10 |
| 547 | 549 |
&loop |
| 548 | 550 |
OVR #04 MOD #00 SWP #0008 MUL2 .blendview/x1 PEK2 ADD2 .Screen/x DEO2 |
| ... | ... |
@@ -571,7 +573,7 @@ RTN |
| 571 | 573 |
#00 .i POK |
| 572 | 574 |
&bytes |
| 573 | 575 |
.tileview/x PEK2 #0088 ADD2 .Screen/x DEO2 |
| 574 |
- .tileview/addr PEK2 #00 .i PEK ADD2 GET #22 ;draw-byte JSR2 |
|
| 576 |
+ .settings/tile PEK2 #00 .i PEK ADD2 GET #22 ;draw-byte JSR2 |
|
| 575 | 577 |
( incr ) .i PEK #01 ADD .i POK |
| 576 | 578 |
( incr ) .Screen/y DEI2 8+ .Screen/y DEO2 |
| 577 | 579 |
.i PEK #08 LTH ;&bytes JNZ2 |
| ... | ... |
@@ -587,7 +589,7 @@ RTN |
| 587 | 589 |
|
| 588 | 590 |
( draw tiles 2x2 ) |
| 589 | 591 |
.tileview/y PEK2 .Screen/y DEO2 |
| 590 |
- #00 .pt/x POK #00 .pt/y POK .tileview/addr PEK2 .Screen/addr DEO2 |
|
| 592 |
+ #00 .pt/x POK #00 .pt/y POK .settings/tile PEK2 .Screen/addr DEO2 |
|
| 591 | 593 |
|
| 592 | 594 |
&tiles-ver |
| 593 | 595 |
#00 .pt/x POK |
| ... | ... |
@@ -236,28 +236,28 @@ parsetoken(char *w) |
| 236 | 236 |
return error("Address is not in zero page", w);
|
| 237 | 237 |
pushbyte(l->addr, 1); |
| 238 | 238 |
return ++l->refs; |
| 239 |
- } else if(w[0] == ',' && (l = findlabel(w + 1))) {
|
|
| 239 |
+ } else if(w[0] == ',' && (l = findlabel(w + 1))) { /* relative */
|
|
| 240 | 240 |
int off = l->addr - p.ptr - 3; |
| 241 | 241 |
if(off < -126 || off > 126) |
| 242 | 242 |
return error("Address is too far", w);
|
| 243 | 243 |
pushbyte((Sint8)off, 1); |
| 244 | 244 |
return ++l->refs; |
| 245 |
- } else if(w[0] == ':' && (l = findlabel(w + 1))) { /* absolute */
|
|
| 245 |
+ } else if(w[0] == ':' && (l = findlabel(w + 1))) { /* raw */
|
|
| 246 | 246 |
pushshort(l->addr, 0); |
| 247 | 247 |
return ++l->refs; |
| 248 | 248 |
} else if(w[0] == ';' && (l = findlabel(w + 1))) { /* absolute */
|
| 249 | 249 |
pushshort(l->addr, 1); |
| 250 | 250 |
return ++l->refs; |
| 251 |
- } else if(findopcode(w) || scmp(w, "BRK", 4)) {
|
|
| 251 |
+ } else if(findopcode(w) || scmp(w, "BRK", 4)) { /* opcode */
|
|
| 252 | 252 |
pushbyte(findopcode(w), 0); |
| 253 | 253 |
return 1; |
| 254 |
- } else if(w[0] == '"') {
|
|
| 254 |
+ } else if(w[0] == '"') { /* string */
|
|
| 255 | 255 |
pushword(w + 1); |
| 256 | 256 |
return 1; |
| 257 |
- } else if(w[0] == '\'') {
|
|
| 257 |
+ } else if(w[0] == '\'') { /* char */
|
|
| 258 | 258 |
pushbyte((Uint8)w[1], 0); |
| 259 | 259 |
return 1; |
| 260 |
- } else if(w[0] == '#') {
|
|
| 260 |
+ } else if(w[0] == '#') { /* immediate */
|
|
| 261 | 261 |
if(slen(w + 1) == 1) |
| 262 | 262 |
pushbyte((Uint8)w[1], 1); |
| 263 | 263 |
if(sihx(w + 1) && slen(w + 1) == 2) |
| ... | ... |
@@ -267,11 +267,13 @@ parsetoken(char *w) |
| 267 | 267 |
else |
| 268 | 268 |
return 0; |
| 269 | 269 |
return 1; |
| 270 |
- } else if(sihx(w)) {
|
|
| 270 |
+ } else if(sihx(w)) { /* raw */
|
|
| 271 | 271 |
if(slen(w) == 2) |
| 272 | 272 |
pushbyte(shex(w), 0); |
| 273 | 273 |
else if(slen(w) == 4) |
| 274 | 274 |
pushshort(shex(w), 0); |
| 275 |
+ else |
|
| 276 |
+ return error("Hex value length is invalid", w);
|
|
| 275 | 277 |
return 1; |
| 276 | 278 |
} else if((m = findmacro(w))) {
|
| 277 | 279 |
int i; |
| ... | ... |
@@ -23,7 +23,7 @@ static SDL_Renderer *gRenderer; |
| 23 | 23 |
static SDL_Texture *gTexture; |
| 24 | 24 |
static Ppu ppu; |
| 25 | 25 |
static Apu apu; |
| 26 |
-static Device *devsystem, *devscreen, *devmouse, *devctrl, *devapu, *devfile; |
|
| 26 |
+static Device *devscreen, *devmouse, *devctrl, *devapu; |
|
| 27 | 27 |
|
| 28 | 28 |
Uint8 zoom = 0, debug = 0, reqdraw = 0; |
| 29 | 29 |
|
| ... | ... |
@@ -350,14 +350,14 @@ main(int argc, char **argv) |
| 350 | 350 |
if(!init(&u)) |
| 351 | 351 |
return error("Init", "Failed");
|
| 352 | 352 |
|
| 353 |
- devsystem = portuxn(&u, 0x0, "system", system_talk); |
|
| 353 |
+ portuxn(&u, 0x0, "system", system_talk); |
|
| 354 | 354 |
portuxn(&u, 0x1, "console", console_talk); |
| 355 | 355 |
devscreen = portuxn(&u, 0x2, "screen", screen_talk); |
| 356 | 356 |
devapu = portuxn(&u, 0x3, "audio", audio_talk); |
| 357 | 357 |
devctrl = portuxn(&u, 0x4, "controller", nil_talk); |
| 358 | 358 |
portuxn(&u, 0x5, "---", nil_talk); |
| 359 | 359 |
devmouse = portuxn(&u, 0x6, "mouse", nil_talk); |
| 360 |
- devfile = portuxn(&u, 0x7, "file", file_talk); |
|
| 360 |
+ portuxn(&u, 0x7, "file", file_talk); |
|
| 361 | 361 |
portuxn(&u, 0x8, "---", nil_talk); |
| 362 | 362 |
portuxn(&u, 0x9, "midi", nil_talk); |
| 363 | 363 |
portuxn(&u, 0xa, "datetime", datetime_talk); |
| ... | ... |
@@ -30,6 +30,14 @@ static Uint8 font[][8] = {
|
| 30 | 30 |
{0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x82, 0x7c},
|
| 31 | 31 |
{0x00, 0x7c, 0x82, 0x80, 0xf0, 0x80, 0x80, 0x80}};
|
| 32 | 32 |
|
| 33 |
+Uint8 |
|
| 34 |
+readpixel(Uint8 *sprite, Uint8 h, Uint8 v) |
|
| 35 |
+{
|
|
| 36 |
+ Uint8 ch1 = ((sprite[v] >> h) & 0x1); |
|
| 37 |
+ Uint8 ch2 = (((sprite[v + 8] >> h) & 0x1) << 1); |
|
| 38 |
+ return ch1 + ch2; |
|
| 39 |
+} |
|
| 40 |
+ |
|
| 33 | 41 |
void |
| 34 | 42 |
clear(Ppu *p) |
| 35 | 43 |
{
|
| ... | ... |
@@ -79,9 +87,8 @@ puticn(Ppu *p, Uint8 *layer, Uint16 x, Uint16 y, Uint8 *sprite, Uint8 color) |
| 79 | 87 |
for(v = 0; v < 8; v++) |
| 80 | 88 |
for(h = 0; h < 8; h++) {
|
| 81 | 89 |
Uint8 ch1 = ((sprite[v] >> (7 - h)) & 0x1); |
| 82 |
- if(ch1 == 0 && (color == 0x05 || color == 0x0a || color == 0x0f)) |
|
| 83 |
- continue; |
|
| 84 |
- putpixel(p, layer, x + h, y + v, ch1 ? color % 4 : color / 4); |
|
| 90 |
+ if(ch1 == 1 || (color != 0x05 && color != 0x0a && color != 0x0f)) |
|
| 91 |
+ putpixel(p, layer, x + h, y + v, ch1 ? color % 4 : color / 4); |
|
| 85 | 92 |
} |
| 86 | 93 |
} |
| 87 | 94 |
|
| ... | ... |
@@ -135,15 +142,10 @@ drawppu(Ppu *p) |
| 135 | 142 |
Uint16 key = (y * p->hor + x) * 16; |
| 136 | 143 |
for(v = 0; v < 8; v++) |
| 137 | 144 |
for(h = 0; h < 8; h++) {
|
| 138 |
- Uint8 *sprite = &p->fg[key]; |
|
| 139 |
- Uint8 ch1 = ((sprite[v] >> h) & 0x1); |
|
| 140 |
- Uint8 ch2 = (((sprite[v + 8] >> h) & 0x1) << 1); |
|
| 141 |
- if(ch1 + ch2 == 0) {
|
|
| 142 |
- sprite = &p->bg[key]; |
|
| 143 |
- ch1 = ((sprite[v] >> h) & 0x1); |
|
| 144 |
- ch2 = (((sprite[v + 8] >> h) & 0x1) << 1); |
|
| 145 |
- } |
|
| 146 |
- drawpixel(p, x * 8 + p->pad + 7 - h, y * 8 + p->pad + v, ch1 + ch2); |
|
| 145 |
+ Uint8 color = readpixel(&p->fg[key], h, v); |
|
| 146 |
+ if(color == 0) |
|
| 147 |
+ color = readpixel(&p->bg[key], h, v); |
|
| 148 |
+ drawpixel(p, x * 8 + p->pad + 7 - h, y * 8 + p->pad + v, color); |
|
| 147 | 149 |
} |
| 148 | 150 |
} |
| 149 | 151 |
} |