~rabbits/donsol

0c23812e2fbcbd14c1acfbcf37edaac5c47f6cbd — neauoire 1 year, 4 months ago 9521f41
Starting Uxn port
35 files changed, 173 insertions(+), 41 deletions(-)

A 6502/build.sh
R misc/NOTES => 6502/misc/NOTES
R misc/_clover.asm => 6502/misc/_clover.asm
R misc/_dialogs.asm => 6502/misc/_dialogs.asm
R misc/_diamond.asm => 6502/misc/_diamond.asm
R misc/_heart.asm => 6502/misc/_heart.asm
R misc/_layout.asm => 6502/misc/_layout.asm
R misc/_spade.asm => 6502/misc/_spade.asm
R misc/_splash.asm => 6502/misc/_splash.asm
R src/cart.asm => 6502/src/cart.asm
R src/deck.asm => 6502/src/deck.asm
R src/game.asm => 6502/src/game.asm
R src/head.asm => 6502/src/head.asm
R src/helpers.asm => 6502/src/helpers.asm
R src/init.asm => 6502/src/init.asm
R src/main.asm => 6502/src/main.asm
R src/nmi.asm => 6502/src/nmi.asm
R src/player.asm => 6502/src/player.asm
R src/room.asm => 6502/src/room.asm
R src/sound.asm => 6502/src/sound.asm
R src/splash.asm => 6502/src/splash.asm
R src/sprite.chr => 6502/src/sprite.chr
R src/tables.asm => 6502/src/tables.asm
R src/tests.asm => 6502/src/tests.asm
A 6502/tools/asm6
R tools/asm6.c => 6502/tools/asm6.c
A 6502/tools/lin6
R tools/lin6.c => 6502/tools/lin6.c
R tools/theme.svg => 6502/tools/theme.svg
R tools/zeropage.lua => 6502/tools/zeropage.lua
R zeropage.lua => 6502/zeropage.lua
A bin/donsol.rom
M build.sh
D push.sh
A src/main.tal
A 6502/build.sh => 6502/build.sh +41 -0
@@ 0,0 1,41 @@
#!/bin/sh -e

# Remove old cart
rm -rf bin
mkdir bin

# If asm6 is not built, build it.
if test -f "tools/asm6"; then
  echo "Assembler is ready."
else 
  echo "Compiling assembler."
  tcc tools/asm6.c -o tools/asm6
fi

# If lin6 is not built, build it.
if test -f "tools/lin6"; then
  echo "Linter is ready."
else 
  echo "Compiling linter."
  tcc tools/lin6.c -o tools/lin6
fi

# Lint project
for filename in src/*.asm; do
    [ -e "$filename" ] || continue
   	tools/lin6 -i "$filename"
done

# Build new cart
echo "Assembling new cart."
tools/asm6 src/cart.asm bin/cart.nes

if [ "${1}" = '--push' ]; 
then
  echo "Pushing.."
  ~/Applications/butler push bin/cart.rom hundredrabbits/donsol:nes
fi

# Run
# fceux cart.nes --loadlua zeropage.lua
fceux cart.nes 

R misc/NOTES => 6502/misc/NOTES +0 -0
R misc/_clover.asm => 6502/misc/_clover.asm +0 -0
R misc/_dialogs.asm => 6502/misc/_dialogs.asm +0 -0
R misc/_diamond.asm => 6502/misc/_diamond.asm +0 -0
R misc/_heart.asm => 6502/misc/_heart.asm +0 -0
R misc/_layout.asm => 6502/misc/_layout.asm +0 -0
R misc/_spade.asm => 6502/misc/_spade.asm +0 -0
R misc/_splash.asm => 6502/misc/_splash.asm +0 -0
R src/cart.asm => 6502/src/cart.asm +0 -0
R src/deck.asm => 6502/src/deck.asm +0 -0
R src/game.asm => 6502/src/game.asm +0 -0
R src/head.asm => 6502/src/head.asm +0 -0
R src/helpers.asm => 6502/src/helpers.asm +0 -0
R src/init.asm => 6502/src/init.asm +0 -0
R src/main.asm => 6502/src/main.asm +0 -0
R src/nmi.asm => 6502/src/nmi.asm +0 -0
R src/player.asm => 6502/src/player.asm +0 -0
R src/room.asm => 6502/src/room.asm +0 -0
R src/sound.asm => 6502/src/sound.asm +0 -0
R src/splash.asm => 6502/src/splash.asm +0 -0
R src/sprite.chr => 6502/src/sprite.chr +0 -0
R src/tables.asm => 6502/src/tables.asm +0 -0
R src/tests.asm => 6502/src/tests.asm +0 -0
A 6502/tools/asm6 => 6502/tools/asm6 +0 -0
R tools/asm6.c => 6502/tools/asm6.c +0 -0
A 6502/tools/lin6 => 6502/tools/lin6 +0 -0
R tools/lin6.c => 6502/tools/lin6.c +0 -0
R tools/theme.svg => 6502/tools/theme.svg +0 -0
R tools/zeropage.lua => 6502/tools/zeropage.lua +0 -0
R zeropage.lua => 6502/zeropage.lua +0 -0
A bin/donsol.rom => bin/donsol.rom +0 -0
M build.sh => build.sh +18 -31
@@ 1,37 1,24 @@
#!/bin/bash
#!/bin/sh -e

# Remove old cart
if test -f "cart.nes"; then
  echo "Removing old cart."
  rm cart.nes
fi
echo "Cleaning.."
rm -rf bin
mkdir bin

# If asm6 is not built, build it.
if test -f "tools/asm6"; then
  echo "Assembler is ready."
else 
  echo "Compiling assembler."
  tcc tools/asm6.c -o tools/asm6
fi
echo "Assembling.."
uxnasm src/main.tal bin/donsol.rom 

# If lin6 is not built, build it.
if test -f "tools/lin6"; then
  echo "Linter is ready."
else 
  echo "Compiling linter."
  tcc tools/lin6.c -o tools/lin6
echo "Installing.."
if [ -d "$HOME/roms" ] && [ -e ./bin/donsol.rom ]
then
  cp ./bin/donsol.rom $HOME/roms
    echo "Installed in $HOME/roms" 
fi

# Lint project
for filename in src/*.asm; do
    [ -e "$filename" ] || continue
   	tools/lin6 -i "$filename"
done

# Build new cart
echo "Assembling new cart."
tools/asm6 src/cart.asm cart.nes
if [ "${1}" = '--push' ]; 
then
  echo "Pushing.."
  ~/Applications/butler push bin/donsol.rom hundredrabbits/donsol:uxn
fi

# Run
# fceux cart.nes --loadlua zeropage.lua
fceux cart.nes 
echo "Running.."
uxnemu bin/donsol.rom

D push.sh => push.sh +0 -10
@@ 1,10 0,0 @@
#!/bin/bash

# Push
rm -r release
mkdir release
cp cart.nes release/cart.nes
cp README release/README
~/butler push release hundredrabbits/donsol:nes
~/butler status hundredrabbits/donsol
rm -r release

A src/main.tal => src/main.tal +114 -0
@@ 0,0 1,114 @@
( 
	
 )

%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { NEQ }
%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }

%!~ { NEQk NIP }

%2*  { #10 SFT } %2/  { #01 SFT } %2**  { #10 SFT2 } %2//  { #01 SFT2 }
%4*  { #20 SFT } %4/  { #02 SFT } %4**  { #20 SFT2 } %4//  { #02 SFT2 }
%8*  { #30 SFT } %8/  { #03 SFT } %8**  { #30 SFT2 } %8//  { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }

%2MOD  { #01 AND } %2MOD2  { #0001 AND2 }
%4MOD  { #03 AND } %4MOD2  { #0003 AND2 }
%8MOD  { #07 AND } %8MOD2  { #0007 AND2 }
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
%20MOD { #1f AND } %20MOD2 { #001f AND2 }

%DEBUG  { ;print-hex JSR2 #0a .Console/write DEO }
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }

%RTN { JMP2r }
%TOS  { #00 SWP }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }

( devices )

|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 ]
|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 ]

( variables )

|0000

@cursor
	&x $2 &y $2 &last $1


( program )

|0100 ( -> )

	( theme ) 
	#0a6f .System/r DEO2 
	#05cf .System/g DEO2 
	#0caf .System/b DEO2

	( vectors )
	;on-button   .Controller/vector DEO2
	;on-mouse    .Mouse/vector DEO2
	;on-frame    .Screen/vector DEO2

BRK

@on-frame ( -> )
	( inactive )
BRK

@on-button ( -> )
	
	.Controller/button DEI #04 SFT
	[ #01 ] !~ ,&no-up JCN
		POP BRK &no-up
	[ #02 ] !~ ,&no-down JCN
		POP BRK &no-down
	[ #04 ] !~ ,&no-left JCN
		POP BRK &no-left
	[ #08 ] !~ ,&no-right JCN
		POP BRK &no-right
	POP

	;redraw JSR2 

BRK

@on-mouse ( -> )
	
	;draw-cursor JSR2

	( release-record ) #0000 .Mouse/state DEO .cursor/last STZ

BRK

@redraw ( -- )

RTN

@draw-cursor ( -- )

	( clear last cursor )
	.cursor/x LDZ2 .Screen/x DEO2
	.cursor/y LDZ2 .Screen/y DEO2
	#40 .Screen/sprite DEO

	( record mouse positions )
	.Mouse/x DEI2 DUP2 .cursor/x STZ2 .Screen/x DEO2
	.Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2

	( draw new cursor )
	;pointer-icn .Screen/addr DEO2
	#42 .Mouse/state DEI #00 ! + .Screen/sprite DEO

RTN

@pointer-icn 80c0 e0f0 f8e0 1000
\ No newline at end of file