From 0454655006afe7f83f8de2280b758fb323487e76 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Sat, 7 Mar 2026 23:42:46 +0100 Subject: Show lifes for player 2 if available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- src/assets.s | 14 ++++++++++++++ src/interrupts.s | 29 ++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/assets.s b/src/assets.s index ecdfbe4..139ed5f 100644 --- a/src/assets.s +++ b/src/assets.s @@ -129,6 +129,20 @@ lda #$30 sta PPU::m_data + ;; If there is a player 2, show the little astronaut from the HUD in + ;; order to indicate its lifes. + lda Globals::zp_multiplayer + and #$04 + beq @end + bit PPU::m_status + lda #$28 + sta PPU::m_address + lda #$57 + sta PPU::m_address + lda #$35 + sta PPU::m_data + + @end: rts .endproc diff --git a/src/interrupts.s b/src/interrupts.s index e909d17..775834a 100644 --- a/src/interrupts.s +++ b/src/interrupts.s @@ -6,12 +6,15 @@ ;; If we are on a dev environment, account for any frame drops. .ifdef PARTIAL - bpl @account_for_frame_drop + bmi @after_frame_check + jmp @account_for_frame_drop + @after_frame_check: .else - bpl @end + bmi @save_registers + rti .endif - ;; Save registers. +@save_registers: pha txa pha @@ -48,7 +51,9 @@ and #%00001000 beq @global_flags - ;; Yeah! TODO: this is only done for player 1. + ;; Yeah! + + ;; Update for player 1. bit PPU::m_status lda #$28 sta PPU::m_address @@ -59,6 +64,21 @@ adc #$10 sta PPU::m_data + ;; Update for player 2 if exists. + bit Globals::zp_multiplayer + bpl @unset_life_flag + + bit PPU::m_status + lda #$28 + sta PPU::m_address + lda #$56 + sta PPU::m_address + lda Player::zp_lifes + 1 + clc + adc #$10 + sta PPU::m_data + +@unset_life_flag: ;; And unset the 'life' flag from the player. lda Player::zp_state and #%11110111 @@ -112,7 +132,6 @@ tax pla -@end: rti ;; If we are on a dev environment, account for any frame drops. -- cgit v1.2.3