From 0e1839f48ada69b81f5879449d0e0fe435f851c5 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Thu, 23 Nov 2023 09:38:46 +0100 Subject: space: Improve comments and documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- space/README.md | 10 ++++++++++ space/src/space.s | 10 +++++++--- space/src/states/player.s | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 space/README.md (limited to 'space') diff --git a/space/README.md b/space/README.md new file mode 100644 index 0000000..8a0b451 --- /dev/null +++ b/space/README.md @@ -0,0 +1,10 @@ +## Space + +This is an evolution from the `basics/sprite.s` and `basics/input.s` examples. +That is, we are no longer just showing a sprite, but we also allow the player to +move it and shoot bullets according to the player's input. + +The movement is done by taking into consideration subpixels. For this, I have +taken most of the code/idea from [NES +Hacker](https://github.com/NesHacker/PlatformerMovement). Thus, this part is +mostly attributed to him. diff --git a/space/src/space.s b/space/src/space.s index f2c5dbe..c6d431f 100644 --- a/space/src/space.s +++ b/space/src/space.s @@ -5,7 +5,7 @@ ;; - The movement is done through subpixels for a smoother experience. ;; - The ship's sprites are updated accordingly: resting, acceleration, full ;; speed. -;; - The ship can shoot +;; - The ship can shoot bullets. ;; ;; The subpixel movement is largely based on: ;; https://github.com/NesHacker/PlatformerMovement. @@ -45,8 +45,8 @@ .include "vectors/irq.s" ;;; -;; This is our main subroutine, the reset procedure will call at the very end of -;; initializing the hardware. +;; This is our main subroutine, the reset procedure will call it at the very end +;; of initializing the hardware. ;;; .proc main ;; Before starting the game loop proper we initialize all our assets: load @@ -69,6 +69,10 @@ sta PPU::MASK @main_game_loop: + ;; The main game loop leverages the logic to different subroutines. In + ;; short: first of all update the values on the joypad, then update the + ;; player's movement and sprites, and finally update the bullets' + ;; creation/movement. jsr Joypad::read jsr Player::Movement::update jsr Player::Sprite::update diff --git a/space/src/states/player.s b/space/src/states/player.s index 29c1585..e03f54c 100644 --- a/space/src/states/player.s +++ b/space/src/states/player.s @@ -1,7 +1,7 @@ ;;; ;; Player state: movement, animation, etc. The following memory addresses are ;; reserved for the player: -;; -> $30-$3F: internal data. +;; -> $30-$38: internal data. ;; -> $0200-$0207: OAM data. ;;; .scope Player -- cgit v1.2.3