Skip to content

Commit

Permalink
major update - 0.9 beta2 update
Browse files Browse the repository at this point in the history
  • Loading branch information
tstamborski committed Apr 10, 2022
1 parent e29201d commit ae9b7a7
Show file tree
Hide file tree
Showing 16 changed files with 1,276 additions and 110 deletions.
27 changes: 18 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Sprite Studio 64
Native sprite editor for Commodore 64.
## Overview
Sprite Studio 64 is native sprite editor for Commodore 64 computer.
It's made with simplicity and minimalism, however it doesn't mean lack of most important features.
Sprite Studio 64 can edit simultaneously 64 sprites - only 64 but it has also some tools for animating them and sprite overlay.
It can save your work on diskette in PRG file - this files can be loaded by basic LOAD command or be embedded in assembly source code.
## Short instruction / Keyboard shortcuts
*IF YOU ARE USING EMULATOR THERE IS BETTER TO USE POSITIONAL THEN SYMBOLIC KEYBOARD.*
### DRAWING
Expand All @@ -15,27 +20,31 @@ Native sprite editor for Commodore 64.
* **[2]** - choose multi color 1 for drawing
* **[3]** - choose multi color 2 for drawing
* **[4]** - choose background color for drawing
### MULTICOLOR MODE
### ADVANCED EDITING
* **[M]** - switch on/off multicolor mode
### MOVING AROUND
* **[+]** and **[-]** - change actual address by 64 bytes (it can edit 64 sprites, from address $3000 to $4000, simultaneously)
### CLIPBOARD
* **[CBM+X]** - "cut" current sprite
* **[CBM+C]** - "copy" current sprite
* **[CBM+V]** - "paste" from clipboard to current sprite
* **[F]** - flip sprite horizontally (it affects the clipboard!)
* **[Shift+F]** - flip sprite vertically (it affects the clipboard!)
* **[CBM+,]** - slide sprite left
* **[CBM+.]** - slide sprite right
* **[CBM+:]** - slide sprite down
* **[CBM+@]** - slide sprite up
### MOVING AROUND AND PREVIEW
* **[+]** and **[-]** - change actual address by 64 bytes (it can edit 64 sprites, from address $3000 to $4000, simultaneously)
* **[L]** - "lock" address of first animation frame
* **[A]** or **[Shift+A]** - change number of animation frames
* **[O]** or **[Shift+O]** - change number of overlaying sprites
### SAVING AND LOADING
* **[CBM+L]** - load file from diskette (device 8)
* **[CBM+S]** - save file on diskette (device 8) - prefix filename with @: if you want to overwrite
### MISC
* **[CBM+Q]** - exit from program and return to BASIC
* **[G]** - switch on/off the grid mode
* **[F]** - flip sprite horizontally (it affects the clipboard!)
* **[Shift+F]** - flip sprite vertically (it affects the clipboard!)
* **[E]** - switch different (brown or default black) color of overall screen background
## Features overview
Sprite Studio 64 is simple sprite editor for Commodore 64. It can edit up to 64 sprites and save them to PRG file on diskette.
It is thinked for edit, exit to the BASIC, and use sprites in your short BASIC programs (for example).
## Screenshots
![Screenshot 1](screenshot-0.jpg)
![Screenshot 2](screenshot-1.jpg)
![Screenshot 3](screenshot-2.jpg)
![Screenshot 4](screenshot-3.jpg)
3 changes: 3 additions & 0 deletions empty.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*=$3000
.binary "default-spritebank.raw"

Binary file added examples3.raw
Binary file not shown.
3 changes: 3 additions & 0 deletions examples3.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*=$3000
.binary "examples3.raw"

331 changes: 331 additions & 0 deletions help.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,331 @@
scraddr = $0002
coladdr = $0004
dataaddr = $0006

reset = $fffc

;------------------------------------------------

*=$801

basicstart
.byte $0C,$08,$0A,$00,$9E,$20,$32,$30,$36,$34,$00,$00,$00

*=$810
.offs $810-*

init
lda #0
sta $d020
sta $d021

jsr clrscr

lda #<helptxt
sta dataaddr
lda #>helptxt
sta dataaddr+1
jsr printscreen

mainloop
jsr readkeyboard
jmp mainloop

rts

readkeyboard
.block
sei
lda #%11111111
sta $dc02
lda #%00000000
sta $dc03

;sprawdz shift
lda #%11111101
sta $dc00
lda $dc01
and #%10000000
bne *+5
jmp shiftpressed
lda #%10111111
sta $dc00
lda $dc01
and #%00010000
bne *+5
jmp shiftpressed

nomodifiers
lda #%01111111 ;7
sta $dc00

lda $dc01
and #%10000000
bne *+5
jsr reset

lda #%11111110 ;0
sta $dc00

lda $dc01
and #%10000000
bne *+5
jsr scrolldown

jmp funcend

shiftpressed
lda #%11111110 ;0
sta $dc00

lda $dc01
and #%10000000
bne *+5
jsr scrollup

funcend
cli
rts
.bend

scrolldown
.block
dec scrolltimer
beq *+3
rts

lda dataaddr
clc
adc #40
sta dataaddr
bcc *+4
inc dataaddr+1

lda dataaddr+1
cmp #>helptxtend
bmi funcend
lda dataaddr
cmp #<helptxtend
bmi funcend
correct
lda #<helptxtend
sta dataaddr
lda #>helptxtend
sta dataaddr+1

funcend
jsr printscreen

rts
.bend

scrollup
.block
dec scrolltimer
beq *+3
rts

lda dataaddr
sec
sbc #40
sta dataaddr
bcs *+4
dec dataaddr+1

lda dataaddr+1
cmp #>helptxt
beq *+4
bpl funcend
lda dataaddr
cmp #<helptxt
bpl funcend
correct
lda #<helptxt
sta dataaddr
lda #>helptxt
sta dataaddr+1

funcend
jsr printscreen

rts
.bend

printscreen
.block
lda #$04
sta scraddr+1
lda #$00
sta scraddr

lda dataaddr+1
sta coladdr+1
lda dataaddr
sta coladdr

ldx #0
majorloop
ldy #0
minorloop
lda (coladdr),y
sta (scraddr),y
iny
cpy #40
bne minorloop

lda scraddr
clc
adc #40
sta scraddr
bcc *+4
inc scraddr+1

lda coladdr
clc
adc #40
sta coladdr
bcc *+4
inc coladdr+1

inx
cpx #25
bne majorloop
loopend

rts
.bend

clrscr
.block
lda #32 ;spacja
ldx #0
clrloop
sta 1024,x
sta 1224,x
sta 1424,x
sta 1624,x
sta 1824,x
inx
cpx #200
bne clrloop

lda #5 ;na zielono
ldx #0
colloop
sta 55296,x
sta 55496,x
sta 55696,x
sta 55896,x
sta 56096,x
inx
cpx #200
bne colloop

rts
.bend

scrolltimer
.byte $ff

helptxt
.screen " sprite studio 64 manual "
.screen " "
.screen "[run/stop] to quit [crsr down] to scroll"
.screen " "
.screen " "
.screen " ============= drawing ================ "
.screen " "
.screen "[joystick directions] or [crsr] to move "
.screen "the drawing cursor around. "
.screen " "
.screen "[joystick fire] or [space] to place "
.screen "active color in place of cursor. "
.screen " "
.screen "[del] to erase / put background color in"
.screen "place of cursor. "
.screen " "
.screen " "
.screen " ========== changing colors =========== "
.screen " "
.screen "[1] to choose main sprite color. "
.screen " "
.screen "[2] to choose multi color 1. "
.screen " "
.screen "[3] to choose multi color 2. "
.screen " "
.screen "[4] to choose background color. "
.screen " "
.screen "[f1] or [shift+f1] to change main sprite"
.screen "color. "
.screen " "
.screen "[f3] or [shift+f3] to change multi color"
.screen "1. "
.screen " "
.screen "[f5] or [shift+f5] to change multi color"
.screen "2. "
.screen " "
.screen "[f7] or [shift+f7] to change background "
.screen "color. "
.screen " "
.screen " "
.screen " ========= advanced editing =========== "
.screen " "
.screen "[m] to switch on/off multicolor mode. "
.screen " "
.screen "[c=+x] to cut current sprite. "
.screen " "
.screen "[c=+c] to copy current sprite. "
.screen " "
.screen "[c=+v] to paste from clipboard to "
.screen "current sprite. "
.screen " "
.screen "[f] to flip current sprite horizontally."
.screen " "
.screen "[shift+f] to flip current sprite "
.screen "vertically. "
.screen " "
.screen "[c=+,] to slide sprite left. "
.screen " "
.screen "[c=+.] to slide sprite right. "
.screen " "
.screen "[c=+:] to slide sprite down. "
.screen " "
.screen "[c=+@] to slide sprite up. "
.screen " "
.screen " "
.screen " ===== moving around and preview ====== "
.screen " "
.screen "[+] or [-] to change address fo current "
.screen "sprite. "
.screen " "
.screen "[l] to lock/unlock address of first "
.screen "animation frame. "
.screen " "
helptxtend
.screen "[a] or [shift+a] to change number of "
.screen "animation frames. "
.screen " "
.screen "[o] or [shift+o] to change number of "
.screen "overlaying sprites. "
.screen " "
.screen " "
.screen " ======== saving and loading ========== "
.screen " "
.screen "[c=+l] to load file from diskette. "
.screen " "
.screen "[c=+s] to save file on diskette. you "
.screen "should prefix filename with @: if you "
.screen "want to overwrite. "
.screen " "
.screen " "
.screen " ========== miscellaneous ============= "
.screen " "
.screen "[c=+q] to quit / return to basic. "
.screen " "
.screen "[e] to switch different screen "
.screen "background color. "
.screen " "
.screen "[g] to switch on/off grid mode. "
.screen " "
.screen " "

0 comments on commit ae9b7a7

Please sign in to comment.