From 6d005950a58b797640c8c2e13c5edf85e461d783 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Thu, 11 Feb 2021 21:38:57 -0500 Subject: [PATCH] keypad boops, noclip cheat code --- NeutTower.dsk | Bin 143360 -> 143360 bytes game/boop.fnl | 8 +++++++- game/cheat.fnl | 23 +++++++++++++++++++++++ game/entity.fnl | 2 +- game/init.fnl | 3 ++- game/player.fnl | 6 +++++- todo.txt | 42 ++---------------------------------------- 7 files changed, 40 insertions(+), 44 deletions(-) create mode 100644 game/cheat.fnl diff --git a/NeutTower.dsk b/NeutTower.dsk index 127f963eaeb23addd9f4377ddbbfd96bfbc3b6f8..d3e7c88c0838cd097c3de2935f699ddccf080148 100644 GIT binary patch delta 9515 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 delta 9698 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] [:dup (string.byte "Z") :<=]] + [:NTSPISPOPD] + [:drop])) diff --git a/game/entity.fnl b/game/entity.fnl index 37e8822..8df6d49 100644 --- a/game/entity.fnl +++ b/game/entity.fnl @@ -177,7 +177,7 @@ (vm:while [:read-key :dup 0x3a :< :over 0x30 :>= :& :not] :drop) 0x30 :-) (vm:word :keypad-digit ; pscreen -- n - :read-digit :swap :over :draw-digit) + :read-digit :swap :over :draw-digit :dup :snd-keypad) (vm:word :next-digit ; pscreen n -- pscreen n :shl4 :over :keypad-digit :+ :swap 1 :+ :swap) (vm:word :draw-single-keypad-hash ; pscreen -- pscreen diff --git a/game/init.fnl b/game/init.fnl index ab22a9f..bd55403 100644 --- a/game/init.fnl +++ b/game/init.fnl @@ -11,6 +11,7 @@ (util.reload :game.entity) (util.reload :game.player) (util.reload :game.boop) +(util.reload :game.cheat) (tile.appendtiles org.code) (org.code:append [:align 0x100] :font) @@ -26,7 +27,7 @@ (util.reload :game.bosskey) (vm:var :tick-count) -(vm:word :handle-key :tick :read-key :player-key :hide-footer) +(vm:word :handle-key :tick :read-key :dup :cheat-key :player-key :hide-footer) (vm:word :tick :map-specific-tick :tick-count :get 1 :+ :tick-count :set :player-redraw :rnd :drop) (vm:var :next-level 0) diff --git a/game/player.fnl b/game/player.fnl index 9a7c770..9189b85 100644 --- a/game/player.fnl +++ b/game/player.fnl @@ -67,6 +67,10 @@ (vm:word :set-player-dir ; dir -- :is-jaye? (vm:if [:jaye-dir :set] [:drop])) +(vm:var :noclip) +(vm:word :move-if-clear ; yx -- f + :noclip :get (vm:if [:drop vm.false] [:movable-player-flag :flag-at? :not])) + (vm:word :movable-player-flag ; -- flag :is-neut? (vm:if [neutable] [walkable])) @@ -93,7 +97,7 @@ [vm.false])) (vm:word :move-noop :drop vm.false) (vm:word :handle-general-move ; yx -- f - (vm:if-or [[:dup :map-specific-move] [:dup :move-rexx-trash] [:dup :move-gord-sit] [:dup :move-gord-stand] [:dup :movable-player-flag :flag-at? :not]] + (vm:if-or [[:dup :map-specific-move] [:dup :move-rexx-trash] [:dup :move-gord-sit] [:dup :move-gord-stand] [:dup :move-if-clear]] [:drop vm.true] [:move-noop])) (vm:def :yxclip? ; yx -- f diff --git a/todo.txt b/todo.txt index 25fad05..1f84c14 100644 --- a/todo.txt +++ b/todo.txt @@ -1,44 +1,6 @@ Game: -* Ending screen -* Intro sequence (how to show earthquake?) - - -FLOPPY DISK IDEAS: -* I am not going to write my own DOS -* I will use ProDOS - BOOTI-compatible, modern -* ProDOS 2.4.2 - https://prodos8.com/ -* Generate file(s) to be injected into a blank bootable ProDOS disk image - -thinking: -neut.tower contains all code / data -loader.system contains a small program that maps offsets of 512-byte blocks to memory addresses -- is loaded to 0x2000 & will be wiped by gfx? No, PRODOS is loaded at $2000 and moved -- no, XXX.SYSTEM is loaded to 0x2000 as well -- Alternately, we could write one program that batch-loads the whole game into $2000 and moves it to where it belongs? -- How big is the game with all levels? Could we load the whole thing into consecutive memory starting at $4000? - - (I don't think this would work on 32kb tape-loaded machines...) -- With ProDOS I can assume 64kb -prodos claims: -$bf00-$ffff - ProDOS -$9600-$bf00 - BASIC.SYSTEM - don't care? -$0100-$0800 - "other use or reserved" -$3A-$3F - used by disk routines, unsafe -$40-$4F - used by ProDOS but preserved, safe to use - -system bitmap: marks pages of memory as "not valid to allocate a file buffer" -- loader will have to protect memory that it will be moving game code to? - -https://prodos8.com/docs/techref/calls-to-the-mli/ -the existence of SET_BUF should mean we can load directly to the memory -we care about? orr I guess 512 bytes is housekeeping stuff (index block) - -16kb version - $0000-$4000 - no we need at least 32kb -there's basically only 5kb of code space for an hgr game? -$0000-$03ff 0kb-1kb - zp, stack, input buffer, DOS -$0400-$07ff 1kb-2kb - text page 1 -$0800-$0bff 2kb-3kb - text page 2 -$0c00-$1fff 3kb-8kb - free space -$2000-$4000 8kb-16kb - hgr gfx page 1 +* cheat codes +* save/load tooling ideas: * REPLy buffer (Polywell?)