I'm a cat
This commit is contained in:
parent
97bf626225
commit
7e5b50dcba
BIN
8Bitsy.dsk
Normal file
BIN
8Bitsy.dsk
Normal file
Binary file not shown.
|
@ -25,7 +25,7 @@
|
||||||
(table.insert block :nextline)
|
(table.insert block :nextline)
|
||||||
block)
|
block)
|
||||||
(fn prg.dat-parser.basic [lines]
|
(fn prg.dat-parser.basic [lines]
|
||||||
(local block (prg:new-block))
|
(local block (prg.new-block))
|
||||||
(each [_ line (ipairs (lume.slice lines 2))]
|
(each [_ line (ipairs (lume.slice lines 2))]
|
||||||
(prg:parse-dats block [(parse-line line)]))
|
(prg:parse-dats block [(parse-line line)]))
|
||||||
(prg:parse-dats block [[:dw 0]])
|
(prg:parse-dats block [[:dw 0]])
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
(fn install-vm-parser [prg]
|
(fn install-vm-parser [prg]
|
||||||
(fn prg.dat-parser.vm [bytecodes]
|
(fn prg.dat-parser.vm [bytecodes]
|
||||||
(local block (prg:new-block))
|
(local block (prg.new-block))
|
||||||
(each [_ bytecode (ipairs (lume.slice bytecodes 2))]
|
(each [_ bytecode (ipairs (lume.slice bytecodes 2))]
|
||||||
(if
|
(if
|
||||||
(= (type bytecode) :number)
|
(= (type bytecode) :number)
|
||||||
|
@ -391,8 +391,8 @@
|
||||||
(vm:def :$doconst ; usage: [jsr :$doconst] followed by two bytes
|
(vm:def :$doconst ; usage: [jsr :$doconst] followed by two bytes
|
||||||
(vm:reserve)
|
(vm:reserve)
|
||||||
[:pla] [:sta vm.W] [:pla] [:sta vm.WH]
|
[:pla] [:sta vm.W] [:pla] [:sta vm.WH]
|
||||||
[:ldy 1] [:lda [vm.W] :y] [:sta vm.TOP]
|
[:ldy 1] [:lda [vm.W] :y] [:sta vm.TOP :x]
|
||||||
[:iny] [:lda [vm.W] :y] [:sta vm.TOPH])
|
[:iny] [:lda [vm.W] :y] [:sta vm.TOPH :x])
|
||||||
|
|
||||||
(fn vm.const [self name val]
|
(fn vm.const [self name val]
|
||||||
(self.code:append name [:jsr :$doconst]
|
(self.code:append name [:jsr :$doconst]
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
(local {: vm : say : deflevel} (require :game.defs))
|
(local {: vm : say : deflevel} (require :game.defs))
|
||||||
|
|
||||||
(deflevel "game/map1.json" :map1)
|
(deflevel "game/map1.json" :map1)
|
||||||
(vm:word :cat (say :pcat "I'M A CAT"))
|
(vm:word :cat (say :cat "I'M A CAT"))
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,10 @@
|
||||||
(tile.appendtiles org.code)
|
(tile.appendtiles org.code)
|
||||||
(org.code:append [:align 0x100] :font)
|
(org.code:append [:align 0x100] :font)
|
||||||
(tile.appendgfx org.code (tile.loadgfx tile.fn-font))
|
(tile.appendgfx org.code (tile.loadgfx tile.fn-font))
|
||||||
|
(tile.append-portraitwords vm)
|
||||||
|
|
||||||
(vm:var :tick-count)
|
(vm:var :tick-count)
|
||||||
(vm:word :handle-key :tick :read-key :dup :cheat-key :player-key :hide-footer)
|
(vm:word :handle-key :tick :read-key :player-key :hide-footer)
|
||||||
(vm:word :tick :map-specific-tick :tick-count :get 1 :+ :tick-count :set :player-redraw :rnd :drop)
|
(vm:word :tick :map-specific-tick :tick-count :get 1 :+ :tick-count :set :player-redraw :rnd :drop)
|
||||||
|
|
||||||
(vm:var :next-level 0)
|
(vm:var :next-level 0)
|
||||||
|
@ -30,6 +31,8 @@
|
||||||
:map-specific-load
|
:map-specific-load
|
||||||
:full-redraw)
|
:full-redraw)
|
||||||
|
|
||||||
|
(util.reload :game.content)
|
||||||
|
|
||||||
(vm.code:append :main
|
(vm.code:append :main
|
||||||
[:jsr :reset]
|
[:jsr :reset]
|
||||||
[:jsr :interpret]
|
[:jsr :interpret]
|
||||||
|
|
|
@ -62,14 +62,13 @@
|
||||||
|
|
||||||
(vm:word :two-frame :tick-count :get 0x1f :& 0x10 :<)
|
(vm:word :two-frame :tick-count :get 0x1f :& 0x10 :<)
|
||||||
(vm:word :player-tile ; -- ptile
|
(vm:word :player-tile ; -- ptile
|
||||||
:two-frame (vm:if [(itile :player-frame1)] [(itile :player-frame1)]))
|
(itile :player-frame1) :lookup-tile)
|
||||||
|
|
||||||
(vm:word :flag-at? ; yx flag -- f
|
(vm:word :flag-at? ; yx flag -- f
|
||||||
:swap :itile-at :lookup-flags :&)
|
:swap :itile-at :lookup-flags :&)
|
||||||
|
|
||||||
(vm:word :player-key ; key --
|
(vm:word :player-key ; key --
|
||||||
(vm:ifchain
|
(vm:ifchain
|
||||||
[:dup (string.byte " ") :=] [:drop :toggle-player]
|
|
||||||
[:movement-dir :dup]
|
[:movement-dir :dup]
|
||||||
[:player-yx :get :swap ; oldyx dir
|
[:player-yx :get :swap ; oldyx dir
|
||||||
:try-move-player
|
:try-move-player
|
||||||
|
|
Loading…
Reference in a new issue